我想在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。
答案 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
有很多有用的选项,请查看文档。