Как организовать мои файлы с помощью CMake? - PullRequest
8 голосов
/ 17 августа 2011

У меня возникла небольшая проблема с CMake, связанная с организацией моего кода в решении. У меня есть привычка организовывать свое пространство имен, создавая каталог для каждого. Например, если я создаю что-то вроде этого:

namespace test { namespace blabla  { ... } }

Я бы создал тест каталога, а внутри него - каталог blabla, однако CMake не позволяет им появляться в моем проекте Visual Studio или Xcode.

Есть ли уловка, чтобы сделать это?

Ответы [ 4 ]

13 голосов
/ 17 августа 2011

Попробуйте использовать команду source_group . После вызова add_executable добавьте source_group операторов для структурирования вашего проекта, например ::

source_group("test\\blabla" FILES file1.cpp file2.cpp)
5 голосов
/ 26 июля 2012

Для группировки проектов в VS вы можете использовать этот способ в CMake (версия после 2.8.3)

//turn on using solution folders
set_property( GLOBAL PROPERTY USE_FOLDERS ON)

//add test projects under 1 folder 'Test-projects'
FOREACH(TEST ${TESTS_LIST})
    add_test(NAME ${TEST}  COMMAND $<TARGET_FILE:${TEST}>)
    set_tests_properties( ${TEST} PROPERTIES TIMEOUT 1) 
    set_property(TARGET ${TEST} PROPERTY FOLDER "Test-projects")
ENDFOREACH(TEST)
2 голосов
/ 17 августа 2011

Для Visual Studio: убедитесь, что все имена файлов уникальны. Результат компиляции dir/file.cpp будет obj/file.obj. Когда компилятор компилирует otherdir/file.cpp, результат будет obj/file.obj - предыдущий объектный файл будет перезаписан . Это относится к VS 2008 и более ранним версиям, и я подозреваю, что это все еще относится к VS 2010.

Я тоже организую исходный код, как вы. В итоге я использовал следующую схему именования: если путь к исходному файлу будет Dir/Subdir/AnotherSubDir/File.cpp, тогда я назову файл Dir/Subdir/AnotherSubdir/DirSubdirAnotherSubdirFile.cpp. Гадкий? Да. Но он превосходит проект, который не будет ссылаться, и легко понять, каким должно быть имя файла. Я думаю, вы могли бы просто добавить порядковый номер в файл, но я подумал, что это будет ужаснее. Кроме того, если вы забудете сделать имя файла уникальным, ошибка не так очевидна. Особенно, когда ты устал, а твоя невеста / жена ждет ...

0 голосов
/ 14 марта 2015

Принятое решение не работает для Xcode с Xcode 6. Однако есть простой обходной путь:

  1. Удалите ссылки на исходные файлы из вашего проекта XCode (удалите их на боковой панели, затем выберите «Удалить ссылку»).
  2. Добавьте корневую папку (и) обратно, убедитесь, что установлен флажок «Создать группу», и выберите желаемый объект (ы).

Тад! Теперь ваши файлы должны соответствовать структуре папок в Finder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...