cmake外部项目:允许下载或用户指定路径
考虑一个依赖于外部项目的项目。在配置项目时,我想为用户提供两种选择之一:cmake外部项目:允许下载或用户指定路径,cmake,Cmake,考虑一个依赖于外部项目的项目。在配置项目时,我想为用户提供两种选择之一: 允许cmake的ExternalProject工具自动下载、配置、生成和安装此外部项目 如果外部项目已在本地生成,则允许用户手动指定头/lib的路径 这个想法是,如果用户不在乎,只是运行 cmake . 然后,cmake将自动执行外部项目的下载和安装。但是,对于开发人员来说,在其机器上本地构建(而不是安装)外部项目是很常见的。为了节省内存或便于定制,我还希望用户能够手动指定(例如通过ccmake)该项目的头和库路径,
- 允许cmake的ExternalProject工具自动下载、配置、生成和安装此外部项目
- 如果外部项目已在本地生成,则允许用户手动指定头/lib的路径
cmake .
然后,cmake将自动执行外部项目的下载和安装。但是,对于开发人员来说,在其机器上本地构建(而不是安装)外部项目是很常见的。为了节省内存或便于定制,我还希望用户能够手动指定(例如通过ccmake)该项目的头和库路径,这将节省下载和编译的工作量
有什么好办法吗?我不确定有什么好办法,但这是可能的。我可以想象,粗流会是这样的:
add_executable(Foo ...)
find_path(OtherProjectIncludes NAMES ...)
find_library(OtherProjectLib NAMES ...)
if(OtherProjectIncludes AND OtherProjectLib)
include_directories(${OtherProjectIncludes})
target_link_libraries(Foo ${OtherProjectLib})
else()
include(ExternalProject)
...
endif()
如果有一个find模块可用于另一个项目,您可能会使用find\u包
代替find\u路径
和find\u库
无论如何,您需要决定如何处理这样一种情况:用户通过一条路径来查找另一个项目的现有(构建)副本,但是find\u xxx
调用失败。您可以继续调用ExternalProject
模块,也可以提供一条有用的FATAL\u ERROR
消息,允许用户重试