首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake ExternalProject_Add()和FindPackage()

CMake ExternalProject_Add()和FindPackage()
EN

Stack Overflow用户
提问于 2013-07-03 19:40:10
回答 2查看 23.7K关注 0票数 34

是否有合适的方法来查找使用ExternalProject_Add()构建的库(通过FindPackage()

问题是CMake无法在CMake时找到该库,因为外部库是在编译时构建的。我知道在超级构建中构建库和项目时,可以将这两个CMake函数组合在一起,但我想在普通的CMake项目中使用它。

事实上,我想用ExternalProject_Add构建VTK6,并在我的CMake项目中用FindPackage找到它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 23:04:26

有一种方法可以做到这一点。但这有点黑客的味道。您基本上添加了一个自定义目标,它在构建过程中重新运行cmake。

你必须在一个小的测试项目中尝试它,以决定它是否适用于你。

代码语言:javascript
运行
复制
find_package(Beaengine)


############################################
#
#    BeaEngine
#
include(ExternalProject)
externalproject_add(BeaEngine
    SOURCE_DIR            ${PROJECT_SOURCE_DIR}/beaengine   
    SVN_REPOSITORY        http://beaengine.googlecode.com/svn/trunk/
    CMAKE_ARGS            -DoptHAS_OPTIMIZED=TRUE -DoptHAS_SYMBOLS=FALSE -DoptBUILD_64BIT=FALSE -DoptBUILD_DLL=FALSE -DoptBUILD_LITE=FALSE
    INSTALL_COMMAND       ""
 )


if(NOT ${Beaengine_FOUND})
    #rerun cmake in initial build
    #will update cmakecache/project files on first build
    #so you may have to reload project after first build
    add_custom_target(Rescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS BeaEngine)
else()
    #Rescan becomes a dummy target after first build
    #this prevents cmake from rebuilding cache/projects on subsequent builds
    add_custom_target(Rescan)
endif()




add_executable(testapp testapp.cpp )
add_dependencies(testapp Rescan)
if(${Beaengine_FOUND})
    target_link_libraries(testapp ${Beaengine_LIBRARY})
endif()

这似乎适用于mingw makefiles / eclipse makefile项目。vs将在第一次构建后请求重新加载所有项目。

票数 23
EN

Stack Overflow用户

发布于 2020-03-10 02:48:32

时间过去了,CMake实现了一个本机版本,允许从ExternalProject_Add引用目标。

此功能在FetchContent模块中实现。它允许下载并立即使用在配置时定义的目标。

正如我的previous answer所暗示的那样,它使用了一个临时构建目录,但使用的是一个更集成的应用程序接口。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17446981

复制
相关文章

相似问题

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