在 Conan2 中,有新的自动生成文件,其中包含有用的变量,例如包位置。
在 macOS 中,该文件称为
conanbuild.sh
,它调用一个名为 conanbuildenv-debug-armv8.sh
的更具体的文件,该文件导出所需的环境文件:
例如:
conanbuild.sh
的内容:
. "/Users/user/cmake-proj/conanbuildenv-debug-armv8.sh"
以及文件
conanbuildenv-debug-armv8.sh
:
export CONAN_PKG_ROOT="$CONAN_PKG_ROOT /Users/user/.conan2/p/blablabla/p"
现在我希望能够使用 CMakeLists.txt 中的变量
CONAN_PKG_ROOT
。
我当前在 CMakeLists.txt 上获取此变量的解决方法非常复杂,涉及创建一个名为
tmp.sh
的临时文件,该文件将值回显为 stdout,并从 cmakeexecute_process 中将其读取为 RESULT_VARIABLE。
execute_process(COMMAND bash "-c" "source ./conanbuild.sh; echo -n 'echo $CONAN_PKG_ROOT' > tmp.sh; bash ./tmp.sh; rm ./tmp.sh"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE variable_RESULT
OUTPUT_VARIABLE variable_OUTPUT
)
message("${variable_OUTPUT}")
我确信有一种更简单的方法可以在 CMake 文件中获取此变量,并且不会更改自动生成文件的内容。也许有人知道怎么做?
您可以使用此语法使用 Cmake 中的环境变量(确保已导出)
set(MyVar "$ENV{MY_VAR}")