如何在Windows上评估CMakeLists.txt中的命令?

时间:2017-01-30 12:30:40

标签: makefile cmake llvm

我想在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中评估命令的正确方法是什么?

目前的平台是Windows 10。

2 个答案:

答案 0 :(得分:2)

您的问题是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}

答案 1 :(得分:1)

我认为您正在寻找execute_process功能。

在你的情况下:

execute_process(COMMAND llvm-config --libs core OUTPUT_VARIABLE x)
message(${x})

execute_process有很多有用的选项,请查看文档。