#c #cmake #dependencies #header-only
#c #cmake #зависимости #только для заголовков
Вопрос:
У меня есть относительно простая библиотека C только для заголовков со следующей структурой
- apps
- app
- CMakeLists.txt
- app.cpp
- include
CMakeLists.txt
Сама библиотека находится в корне проекта и app1
добавляется впоследствии. Мое намерение здесь состоит в том, чтобы использовать библиотеку только для заголовков в качестве целевой ссылки, включающей каталоги и зависимости ссылок.
Вот корневой CMakeLists.txt
файл:
project(myLib)
find_package( OpenGL REQUIRED )
find_package( GLEW REQUIRED )
find_package( Eigen3 REQUIRED )
# add the target
add_library( ${PROJECT_NAME} INTERFACE )
target_include_directories( ${PROJECT_NAME} INTERFACE . )
target_link_directories( ${PROJECT_NAME} INTERFACE OpenGL::OpenGL GLEW::glew Eigen3::Eigen )
# add apps
add_subdirectory(apps)
И CMakeLists.txt
файл приложения:
project(app)
# find Qt5
find_package(Qt5 COMPONENTS Gui Widgets OpenGL REQUIRED)
# add the exec
add_executable( ${PROJECT_NAME} app.cpp )
target_include_directories( ${PROJECT_NAME} PRIVATE . )
target_link_libraries( ${PROJECT_NAME} myLib Qt5::Gui Qt5::Widgets Qt5::OpenGL )
Поскольку app1
находится ниже по myLib
течению, я подумал, что могу просто добавить myLib
в библиотеки ссылок приложения, и оно настроит все автоматически. Это не сработало и app
не смогло увидеть включенные каталоги myLib
.
Есть идеи, как это исправить, или объяснение, если подход изначально неверен?
Спасибо
Комментарии:
1. Вы забыли сказать нам, в чем проблема.
2. действительно, я сделал, спасибо