Как указать расположение исходного каталога в CMakeLists.txt? - PullRequest
0 голосов
/ 06 июля 2019

В моем проекте c ++ cmake я хочу, чтобы мой CMakeLists.txt и исходные файлы находились в разных местах.Как вы можете указать это для cmake?Я хочу знать это, потому что считаю, что имеет смысл отделить файлы сборки от исходных файлов.

В моем случае это для кроссплатформенного проекта.Я знаю, что обычно используют единственные условные конструкции CMakeLists.txt + верхнего уровня для обработки различных целей / платформ, но я планирую иметь разные файлы CMakeLists.txt для каждой платформы и получать их вдали от источников.Примерно так:

-my_project
   -sources
      -module1
         -common.hpp
         -common.cpp
         -windows
            -win_functions.cpp
            -win_functions.hpp
         -linux
            -linux_functions.cpp
            -linux_functions.hpp
      -module2 (...)
      -module3 (...)
   -build_projects
      -windows
         -CMakeLists.txt
      -linux
         -CMakeLists.txt

Мне кажется, что это вопрос определения рабочего / исходного каталога нового cmake, но до сих пор у меня есть доступ к правильному расположению при добавлении исходных файлов, как в:

target_sources(my_target_windows PRIVATE ${win_source_dir}/win_functions.cpp)

Но проблема в том, что Visual Studio не позволяет мне предварительно просматривать исходные файлы при их добавлении таким образом, и, похоже, я не могу решить эту проблему и в CMakeSettings.json для Visual Studio.Поэтому я ищу более встроенную функцию для этого.

1 Ответ

0 голосов
/ 09 июля 2019

Хорошо, нашел решение для моей проблемы в Visual Studio:

В обозревателе решений установите для "solutions and folder" значение "CMake Targets View", и теперь оно будет правильно отображать источники и заголовки, добавленные в проект cmake.

Итак, использование относительных путей к источникам в cmake + эта функция VS решает мою проблему.

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