У меня есть файл CMakeLists.txt для библиотеки. Это довольно просто:Избегайте повторения имени каталога для нескольких включений файлов
set(LIB_FILES source/first.cpp)
add_library(first ${LIB_FILES})
Я поместил файлы в список, потому что в конечном итоге я добавлю больше исходных файлов в библиотеку. Проблема в том, что все файлы будут в каталоге source
. И я не хочу постоянно повторять это.
Я также не хочу использовать решение соответствия шаблону GLOB
, потому что я хочу отредактировать файл CMakeLists.txt при добавлении нового файла. Таким образом, моя сборка будет перестроить решение сборки, и новые файлы будут правильно отображаться (как я понимаю. Я все еще новичок в CMake).
Я попытался добавить файл CMakeLists.txt в каталог source
, просто чтобы создать список LIB_FILES
. Это не получилось очень хорошо. Переменные в CMake являются файлами. И даже когда я нарушил область обзора (с PARENT_SCOPE
), мне все равно пришлось префикс каждого файла с помощью каталога. Так что ничего не получилось.
Я не хочу ставить фактическое определение библиотеки в каталоге source
, так как это сгенерирует все файлы сборки в каталоге source
. И я не хочу этого. Кроме того, мне нужно будет включить заголовки, которые не находятся в каталоге source
.
Моя структура каталогов выглядит следующим образом:
libroot (where the project build files should go)
\-source (where the source code is)
\-include (where the headers that the user of the library includes go)
Так как же я говорю CMake, что все исходные файлы приходят из каталога source
, так что я не должен постоянно объяснить это?
, если вы определяете макрос в корневом CMakeLists.txt, он также должен быть видимым для cmakelists в дочерних каталогах – user1283078
или вы можете поместить его в файл .cmake и использовать include (mymacro.cmake) – user1283078