Dan*_*k82 7 c++ opengl download cmake glm-math
我正在建立一个使用大量ExternalProjects的CMAKE项目.要构建其中一个(CEGUI),我需要下载GLM(OpenGL数学库).此库仅包含库,这意味着您不能编译它.有一些测试可以编译,但在我的项目中不需要它们(而且,其中一个不能正确编译并打破编译链).
我想要的是找到一种方法告诉CMAKE只下载项目(GIT更新等),就像它通常使用ExternalProject_add()函数一样,但不试图编译它(产生一个致命错误),并安装INCLUDE文件(确实是库).
是否有下载头文件并在CMAKE中安装它们的功能?有没有人已经有GLM标题库这个问题?
Fra*_*ser 14
您可以ExternalProject_Add通过设置CONFIGURE_COMMAND和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
)
Run Code Online (Sandbox Code Playgroud)
如果您也想避免安装步骤,那么也只需将其设置为空字符串.然后获取GLM包含目录(将在后续target_include_directories或include_directories调用中使用),只需执行以下操作:
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})
Run Code Online (Sandbox Code Playgroud)