gpt4 book ai didi

c++ - 将 CMake 变量传递给 ExternalProject_Add

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:48 25 4
gpt4 key购买 nike

我正在使用带有 ExternalProject_Add 的 CMake 构建外部库。我使用了答案 here生成以下内容(捕获命令行输入到 CMake 以便将其传递给 ExternalProject_Add 命令):

get_cmake_property(CACHE_VARS CACHE_VARIABLES)
foreach(CACHE_VAR ${CACHE_VARS})
get_property(CACHE_VAR_HELPSTRING CACHE ${CACHE_VAR} PROPERTY HELPSTRING)
if(CACHE_VAR_HELPSTRING STREQUAL "No help, variable specified on the command line.")
get_property(CACHE_VAR_TYPE CACHE ${CACHE_VAR} PROPERTY TYPE)
if(CACHE_VAR_TYPE STREQUAL "UNINITIALIZED")
set(CACHE_VAR_TYPE)
else()
set(CACHE_VAR_TYPE :${CACHE_VAR_TYPE})
endif()
set(CMAKE_ARGS "${CMAKE_ARGS} -D${CACHE_VAR}${CACHE_VAR_TYPE}=\"${${CACHE_VAR}}\"")
endif()
endforeach()

ExternalProject_Add 命令如下所示:

ExternalProject_Add(external_lib
URL ${EXTERNALLIB_SOURCE_DIR}
PREFIX ${EXTERNALLIB_PREFIX}
CMAKE_ARGS "${CMAKE_ARGS};-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
INSTALL_DIR ${EXTERNALLIB_INSTALL_DIR}
BINARY_DIR "${EXTERNALLIB_PREFIX}/lib"
)

我不知道如何将 CMAKE_ARGS 变量正确传递给此命令。显然,其他变量工作正常,但 CMAKE_ARGS 似乎没有正确扩展,因为我知道它包含我想要它包含的内容。我在使用 CMake 时在句法上做错了什么吗?

最佳答案

set(CMAKE_ARGS "${CMAKE_ARGS} -D${CACHE_VAR}${CACHE_VAR_TYPE}=\"${${CACHE_VAR}}\"")

您想从所有选项中创建一个大字符串。试试简单的列表:

list(APPEND CMAKE_ARGS "-D${CACHE_VAR}${CACHE_VAR_TYPE}=${${CACHE_VAR}}")

关于c++ - 将 CMake 变量传递给 ExternalProject_Add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com