У меня есть проект с компонентами (например, Dependency), которые являются очень модульными,
Project
-Dependency
--Include
--Src
--CMakeLists.txt
-Main
--main.cpp
--CMakeLists.txt
CMakeLists.txt
Прямо сейчас я использую target_link_libraries()
и include_directories()
в моем основном CMakeLists.txt с явными относительными путями киспользуйте их.
Я хочу превратить свои зависимости в пакеты / модули / компоненты / библиотеки / некоторые вещи , которые являются автономными, поэтому я могу удалить явные пути.
Я не хочу их устанавливать.Они останутся в дереве сборки.Я хочу, например, переместить всю папку Dependency, не нарушая ничего, или скопировать папку в другой проект и заставить ее работать с помощью всего лишь вызова find_package()
.
-
Я пробовал
target_include_directories(Dependency PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
target_link_libraries(Dependency PUBLIC *Sub-dependencies*)
и
export(TARGETS Dependency FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/DependencyConfig.cmake")
в Dependency CMakeLists.txt, на основе:
https://rix0r.nl/blog/2015/08/13/cmake-guide/ & https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/
Но find_package()
все еще не удается.
-
Как экспортировать интерфейс, чтобы CMake мог автоматически настраивать зависимости между модулями в одном дереве сборки?