Это более общий вопрос, так как я нашел относительно мало информации в сети о том, как лучше организовать исходный код.
То, как я сейчас выложил свой код, это иметь один проект в VSкомпиляция библиотеки, а затем два проекта консольного приложения, один для модульных тестов и один для выполнения кода в библиотеке.
В основном проекте у меня есть папка с именем src, содержащая мой код src,Этот исходный код затем структурируется в различные папки, каждая из которых содержит файлы .h и .cpp.Имена файлов соответствуют именам классов.Папки соответствуют пространствам имен, поэтому каждая папка находится в своем собственном пространстве имен.
Я думал, что это довольно разумный подход, пока не обнаружил, что Visual Studio 2010 работает при таком подходе, если два файла .cpp имеют одно и то же имя (хотя ив разных папках и пространствах имен), потому что все файлы .obj помещаются в один и тот же временный каталог (Debug или Release).
Это заставило меня задуматься, как, конечно, смысл поддержания большого количества пространств имен и вложенных файлов.Пространства имен позволят вам иметь классы с одинаковыми именами и, следовательно, файлы.Некоторые специалисты Google нашли решение для индивидуального выбора конфликтующих файлов и размещения файла .obj в другом месте, но некоторые намекают на худшую производительность, и это кажется странным подходом.
Так что яМне просто интересно, это не разумный макет?Или люди обычно компилируют каждую папку в статическую библиотеку и затем связывают их?Или вы просто поддерживаете разные имена файлов?Затем вы продолжаете сопоставлять имена файлов с именами классов?Потому что, если вы это сделаете, вам также не понадобятся подпространства имен, так как весь проект может быть просто в одном пространстве имен ...
Интересно, я думаю ... не уверен, что этот вопрос конкретендовольно.Я предполагаю, что мой непосредственный вопрос (предполагая, что расположение является несколько разумным), как обойти конфликтующие файлы obj?Я просто думаю о переименовании файлов при сохранении имен классов.Но мне не очень нравится это решение.
Спасибо (простите за длинный вопрос)
PS исходная папка должна быть совместима с gcc под linux