我正在建立一个 CMAKE 项目,该项目使用了很多外部项目。要构建其中之一(CEGUI),我需要下载GLM(OpenGL 数学库)。这个图书馆是仅包含库,这意味着您不能编译它。有一些测试可以编译,但在我的项目中不需要它们(此外,其中之一无法正确编译并破坏编译链)。
我想要的是找到一种方法告诉 CMAKE 仅下载项目(GIT 更新等),就像通常使用ExternalProject_add() 函数一样,但不尝试编译它(这会产生致命错误),然后安装INCLUDE 文件(其中确实是图书馆吗).
有没有下载头文件并安装CMAKE 中的功能?有人已经遇到这个问题了吗GLM头文件库?
您可以避免配置和构建步骤ExternalProject_Add http://www.cmake.org/cmake/help/git-master/module/ExternalProject.html通过设置CONFIGURE_COMMAND
and BUILD_COMMAND
作为空字符串。
至于安装——我一般不会打扰。我喜欢将所有第三方源保留在我自己的构建树中,并在我自己的项目中引用这些源。但是,在这种情况下,您可能可以将安装步骤设置为类似cmake -E copy_directory ...
.
所以完整的命令可能是:
include(ExternalProject)
ExternalProject_Add(
glm
PREFIX ${CMAKE_BINARY_DIR}/glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
<SOURCE_DIR>/glm ${CMAKE_BINARY_DIR}/installed/glm
LOG_DOWNLOAD ON
LOG_INSTALL ON
)
如果您也想避免安装步骤,那么也只需将其设置为空字符串即可。然后获取GLM包含目录(后续使用)target_include_directories http://www.cmake.org/cmake/help/git-master/command/target_include_directories.html or include_directories http://www.cmake.org/cmake/help/git-master/command/include_directories.html调用),只需执行例如:
include(ExternalProject)
ExternalProject_Add(
glm
PREFIX ${CMAKE_BINARY_DIR}/glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)
ExternalProject_Get_Property(glm source_dir)
set(GlmIncludeDir ${source_dir}/glm)
...
target_include_directories(MyTarget PRIVATE ${GlmIncludeDir})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)