CMake зависимость find_package от подпроекта - PullRequest
4 голосов
/ 24 ноября 2011

У меня есть следующая структура каталогов:

main_folder
 + static_lib1
 + executable
  • И static_lib1, и исполняемый файл имеют полные списки CMakeList, так что они могут быть собраны независимо.
  • The 'исполняемый файл "зависит от" static_lib1 ".Он использует find_package() для определения местоположения «static_lib1».
  • Основная папка содержит списки CMakeLists, которые включают в себя «static_lib1» и «исполняемый файл» через add_subdirectory для удобного построения всего проекта за один раз.

Все работает нормально, если я вручную создаю «static_lib1», а затем «исполняемый файл».Но когда я запускаю CMakeLists из главной папки, я получаю сообщение об ошибке, потому что find_package не может найти файлы библиотеки из «static_lib1», которые еще не были созданы.

Как я могу решить эту проблему, сохраняяФайлы CMakeLists отделяются (то есть, не включая CMakeLists для static_lib из CMakeLists исполняемого файла)?

1 Ответ

3 голосов
/ 24 ноября 2011

В исполняемом файле CMakeLists.txt вы можете проверить, строите ли вы автономно или как часть проекта:

if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
  # stand-alone build
  find_package(static_lib1)
else()
  include_directories(../static_lib1)
  link_directories(../static_lib1)
  ...
  target_link_libraries(executable static_lib1)
endif()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...