如何在 Windows 上评估 CMakeLists.txt 中的命令?
How do I evaluate a command in CMakeLists.txt on Windows?
我想在 CMakeLists.txt 中设置一些变量,例如 CMAKE_CXX__FLAGS
。
不幸的是,我不想从终端复制粘贴到 set()
。
相反,我想评估 CMakeLists.txt 中的命令并将变量设置为它们的输出。
一个例子是下面的尝试:
set(x ${llvm-config --libs core})
message("${x}")
我想将 llvm-config --libs core
的输出绑定到 x
。但是评估此 CMakeLists.txt 会导致输出:${llvm-config;--libs;core}
.
在 CMakeLists.txt 中评估命令的正确方法是什么?
当前平台是Windows10.
我认为您正在寻找 execute_process
函数。
你的情况:
execute_process(COMMAND llvm-config --libs core OUTPUT_VARIABLE x)
message(${x})
execute_process
有很多有用的选项,看看文档。
你的问题是Cmake无法定位llvm-config
。要解决此问题,必须将 Cmake 指向程序的位置。
你需要写一个 CMakeLists.txt 比如:
cmake_minimum_required(VERSION 3.7)
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
execute_process(COMMAND llvm-config --libs core WORKING_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} OUTPUT_VARIABLE x)
message(${x})
find_package(LLVM REQUIRED CONFIG)
使 LLVM 特定的 Cmake 变量可用。
要使用llvm-config
,需要将工作目录设置为${LLVM_TOOLS_BINARY_DIR}
。
我想在 CMakeLists.txt 中设置一些变量,例如 CMAKE_CXX__FLAGS
。
不幸的是,我不想从终端复制粘贴到 set()
。
相反,我想评估 CMakeLists.txt 中的命令并将变量设置为它们的输出。
一个例子是下面的尝试:
set(x ${llvm-config --libs core})
message("${x}")
我想将 llvm-config --libs core
的输出绑定到 x
。但是评估此 CMakeLists.txt 会导致输出:${llvm-config;--libs;core}
.
在 CMakeLists.txt 中评估命令的正确方法是什么?
当前平台是Windows10.
我认为您正在寻找 execute_process
函数。
你的情况:
execute_process(COMMAND llvm-config --libs core OUTPUT_VARIABLE x)
message(${x})
execute_process
有很多有用的选项,看看文档。
你的问题是Cmake无法定位llvm-config
。要解决此问题,必须将 Cmake 指向程序的位置。
你需要写一个 CMakeLists.txt 比如:
cmake_minimum_required(VERSION 3.7)
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
execute_process(COMMAND llvm-config --libs core WORKING_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} OUTPUT_VARIABLE x)
message(${x})
find_package(LLVM REQUIRED CONFIG)
使 LLVM 特定的 Cmake 变量可用。
要使用llvm-config
,需要将工作目录设置为${LLVM_TOOLS_BINARY_DIR}
。