首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在CMake中的多个项目之间共享ExternalProject

在CMake中的多个项目之间共享ExternalProject
EN

Stack Overflow用户
提问于 2018-01-09 19:55:28
回答 1查看 668关注 0票数 1

我想在不同的CMake项目之间共享一个ExternalProject。想象一个如下的结构:

代码语言:javascript
复制
prj1
|- CMakeLists.txt
|- ...
prj2
|- CMakeLists.txt
|- ...
lib
|- ext
 |- gtest
  |- CMakeLists.txt
   |- googletest
    |_ actual_google_test_files

我想要得到的是告诉CMakeLists.txt在ExternalProject中使用lib/ext/gtest中的gtest,而不是每次都为每个项目重新构建gtest。

理想情况下,gtest只需在其文件夹中构建一次,项目就可以使用它。我尝试使用像这里解释的那样的ExternalProject (http://kaizou.org/2014/11/gtest-cmake/),并在项目中包含lib/ext/gtest/CMakeLists.txt,但会为每个用户重新编译gtest。

EN

Stack Overflow用户

回答已采纳

发布于 2018-01-11 19:07:52

你应该试着把google_test集成成“子项目”而不是预建的,并使用一个“元”CMakeLists.txt……

请阅读https://crascit.com/2015/07/25/cmake-gtest/

CMakeLists.txt.in:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8.2)
project(googletest-download NONE)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)

CMakeLists.txt:

代码语言:javascript
复制
# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download" )
execute_process(COMMAND "${CMAKE_COMMAND}" --build .
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download" )

# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

# Add googletest directly to our build. This adds
# the following targets: gtest, gtest_main, gmock
# and gmock_main
add_subdirectory("${CMAKE_BINARY_DIR}/googletest-src"
             "${CMAKE_BINARY_DIR}/googletest-build")


add_subdirectory(prj1)
add_subdirectory(prj2)
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48167704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档