我有一个相对简单的仅包含标头的 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
任何想法如何解决这个问题,或者如果方法一开始就错误的解释?
谢谢