gpt4 book ai didi

cmake - 将环境变量传递给 CMake execute_process 中的 COMMAND

转载 作者:行者123 更新时间:2023-12-04 12:37:33 27 4
gpt4 key购买 nike

我有以下在 WORKING_DIRECTORY 中运行 COMMAND 的 CMake 片段。我尝试了不同的方法来传递环境变量 (MBEDTLS_INCLUDE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/../mbedtls/mbedtls/include) 但没有成功。

有效的片段(没有环境变量):

set(BUILD_CMD cargo build --features parsec-client/no-fs-permission-check)
set(WORKING_DIR "${CMAKE_CURRENT_SOURCE_DIR}/parsec_se_driver")

execute_process( COMMAND ${BUILD_CMD}
RESULT_VARIABLE CMD_ERROR
WORKING_DIRECTORY ${WORKING_DIR} )

if(NOT ${CMD_ERROR} MATCHES "0")
MESSAGE(SEND_ERROR "BUILD_CMD STATUS:" ${CMD_ERROR})
endif()

如何将 env 变量传递给 execute_process

如果我这样写:

execute_process( COMMAND MBEDTLS_INCLUDE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/../mbedtls/mbedtls/include cargo build --features parsec-client/no-fs-permission-check
RESULT_VARIABLE CMD_ERROR
WORKING_DIRECTORY ${WORKING_DIR} )

或者对变量取不同的部分,或者添加引号,我得到:

BUILD_CMD STATUS:No such file or directory

最佳答案

正如 CMake 邮件列表 here 中所推荐的,您使用 set(ENV ...) 的解决方案是完全有效的:

set(ENV{MBEDTLS_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../mbedtls/mbedtls/include)
execute_process(
COMMAND ${BUILD_CMD}
RESULT_VARIABLE CMD_ERROR
WORKING_DIRECTORY ${WORKING_DIR}
)

您还可以使用 CMake 的命令行 utility修改后的环境中使用 cmake -E env 运行命令:

execute_process( 
COMMAND ${CMAKE_COMMAND} -E env
MBEDTLS_INCLUDE_DIR="${CMAKE_CURRENT_SOURCE_DIR}/../mbedtls/mbedtls/include" ${BUILD_CMD}
RESULT_VARIABLE CMD_ERROR
WORKING_DIRECTORY ${WORKING_DIR}
)

关于cmake - 将环境变量传递给 CMake execute_process 中的 COMMAND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62927946/

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