如何在 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}