相关疑难解决方法(0)

CMake:如何构建外部项目并包含其目标

我有一个项目A,它导出一个静态库作为目标:

install(TARGETS alib DESTINATION lib EXPORT project_a-targets)
install(EXPORT project_a-targets DESTINATION lib/alib)
Run Code Online (Sandbox Code Playgroud)

现在我想将项目A用作项目B的外部项目并包含其构建目标:

ExternalProject_Add(project_a
  URL ...project_a.tar.gz
  PREFIX ${CMAKE_CURRENT_BINARY_DIR}/project_a
  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
)

include(${CMAKE_CURRENT_BINARY_DIR}/lib/project_a/project_a-targets.cmake)
Run Code Online (Sandbox Code Playgroud)

问题是当运行项目B的CMakeLists时,包含文件尚不存在.

有没有办法让include依赖于正在构建的外部项目?

cmake external-project

95
推荐指数
4
解决办法
8万
查看次数

CPack:从子目录中删除INSTALL命令(googletest目录)

我正在使用CMake进行项目,并使用googletest进行测试用例.通过浏览互联网,将googletest源复制到存储库的子文件夹并将其包含在"add_subdirectory(googletest)"中似乎是一种常见做法.我做到了

现在我正在使用CPack为我的项目生成debian包.不幸的是,CPack生成的软件包与我的项目一起安装了googletest.这当然不是我想要的.

在googletest目录中,我在那里找到了一些INSTALL cmake命令,所以很明显,为什么会这样.现在的问题是 - 我该如何避免呢?我不喜欢从googletest修改CMakeLists.txt文件,因为我必须记住在更新时重新应用我的修改.是否有另一种方法可以在CPack中禁用这些安装?

c++ install cmake googletest cpack

6
推荐指数
3
解决办法
2000
查看次数

标签 统计

cmake ×2

c++ ×1

cpack ×1

external-project ×1

googletest ×1

install ×1