如何告诉 CMAKE 下载一些必要的头文件(更准确地说是 GLM 数学库)而不尝试编译它们?

2024-03-26

我正在建立一个 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(使用前将#替换为@)

如何告诉 CMAKE 下载一些必要的头文件(更准确地说是 GLM 数学库)而不尝试编译它们? 的相关文章

随机推荐