207 похожих чатов

Вы исходники и заголовки в одной папке держите? или выделяете

заголовки в отдельную папку includes? или ещё и исходники в отдельную папку src?

18 ответов

20 просмотров

Публичные хэдеры отдельно, приватные рядом с сорцами. Сорцы в src, публичные хэдеры в include

Пашечка
Публичные хэдеры отдельно, приватные рядом с сорца...

Такс, а если, несколько либ, но с похожим интерфейсом? project ..module1 ….include ……project ……..module1 ……….some_include.hpp ..module2 ….include ……project ……..module2 ……….another_include.hpp

n
Такс, а если, несколько либ, но с похожим интерфей...

Ну, у нас так сделано: project1 include library1 a.h library2 b.h src library1 a_priv.h a.cpp library2 b_priv.h b.cpp project2 include library3 c.h library4 d.h src library3 c_priv.h c.cpp library4 d_priv.h d.cpp

Пашечка
Ну, у нас так сделано: project1 include ...

я чуть по другому делаю. сорцы либы в отдельном каталоге, но c "подкаталогом" в include: project lib lib1 include lib1 a.h src a.c b_priv.h

Maxim Elchugin
я чуть по другому делаю. сорцы либы в отдельном ка...

Ваша схема имхо лучше, она удобнее при предоставлении dev пакета вашего ПО в линуксе, ибо ложится на стандартную схему файловой иерархии линукса. Я пытался и у нас пропихнуть - мне не дали)

Пашечка
Ваша схема имхо лучше, она удобнее при предоставле...

чем мотивировали отказ? на предыдущей работе "подсмотрел" такую структуру. Но там люди пошли дальше, локально есть либа, и там в include сразу хедера. А вот на этапе конфигурации (вроде в этот момент) CMake, в "кеше" воссоздаётся такая структура. Не помню, зачем сделали так сложно. Может чтобы не забыть создать подкаталог в include

Пашечка
"Так удобно"

печалька.. :( Желаю вам упорства и "схождения звёзд на небосводе", чтобы люди осознали, что по новому УДОБНЕЕ :)

Пашечка
Ну, у нас так сделано: project1 include ...

Я вот никогда не понимал этого разделения =\ Особенно в свете современных IDE. Одно дело когда это действительно 3д парти либы и тебе в них никогда не надо будет лезть... Но это филосовская шиза, в них скорее всего придеться лезть и прыгать между папками - та еще дурость. =\

SetPf
Я вот никогда не понимал этого разделения =\ Особе...

Одно волшебное слово, от которого веет романтикой и приключениями: legacy... :)

Вот здесь есть голосование за два подхода с их описанием сообщением ниже

Ramil-Rizvanov Автор вопроса
Ofee Oficsu
Вот здесь есть голосование за два подхода с их опи...

большое спасибо, полезно, мне canonical по духу ближе. Выделять публичный includes вижу смысл если пишешь библиотеку и нужно отдать пользователю сухую папку с заголовками

Ramil Rizvanov
большое спасибо, полезно, мне canonical по духу бл...

>> нужно отдать пользователю сухую папку с заголовками На самом деле, это совсем не обязательно. Я обычно разделяю публичные и приватные заголовки средствами самого CMake, для сложной иерархии каталогов понадобилось всего несколько строк функции, которая устанавливала их, сохраняя корректную иерархию. Может быть, сейчас и этого уже делать не нужно – не проверял

Ramil-Rizvanov Автор вопроса
Ofee Oficsu
>> нужно отдать пользователю сухую папку с заголов...

сейчас остановился на такой схеме, критикуйте |_CMakeLists.txt | |_alphalib | |_includes | |_alpha.h | |_CMakeLists.txt | |_alphaimpl.h | |_alpha.cpp | |_myapplib | |_CMakeLists.txt | |_myapp.h | |_myapp.cpp | |_myapp | |_main.cpp | |_myapptests | |_myapptest1.cpp

Ramil-Rizvanov Автор вопроса
Ramil Rizvanov
критики нет? лейаут совершенный?

Это же вкусовщина - идеальных лейтаутов не существует)

Anatoly Shirokov
фиговый лейаут

И тут я соглашусь )

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта