首页 > 解决方案 > CMAKE 对上游 C++ Header-only 库的依赖

问题描述

我有一个相对简单的仅包含标头的 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

任何想法如何解决这个问题,或者如果方法一开始就错误的解释?

谢谢

标签: c++cmakedependenciesheader-only

解决方案


推荐阅读