[英]How to print variables in CMake?
我想用cmake来构建我的项目,我的CMakeLists.txt很简单:
cmake_minimum_required(VERSION 3.20)
project(YuvParallelProcess)
message("$(PROJECT_SOURCE_DIR)")
include_directories($(PROJECT_SOURCE_DIR)/inc)
link_directories($(PROJECT_SOURCE_DIR)/lib/libyuv)
add_executable(YuvParallelProcess $(PROJECT_SOURCE_DIR)/src/main.cpp)
target_link_libraries(YuvParallelProcess libyuv.a)
我的项目文件组织如下:
YuvParallelProcess
build
data
inc
lib
src
CMakeLists.txt
当我在build
目录中运行cmake ..
时,shell 会打印:
$(PROJECT_SOURCE_DIR)
-- Configuring done
CMake Error at CMakeLists.txt:10 (add_executable):
Cannot find source file:
$(PROJECT_SOURCE_DIR)/src/main.cpp
CMake Error at CMakeLists.txt:10 (add_executable):
No SOURCES given to target: YuvParallelProcess
我不知道为什么 shell 只打印$(PROJECT_SOURCE_DIR)
而不是PROJECT_SOURCE_DIR
的值 如何打印PROJECT_SOURCE_DIR
的值 顺便说一句,我不知道为什么 cmake 无法编译我的项目
Cmake 使用花括号来获取变量的值:
${PROJECT_SOURCE_DIR}
我建议转储如下消息,不要跳过空消息。
message(PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
Cmake 未能配置您的项目,因为它无法识别括号中的变量并认为$(PROJECT_SOURCE_DIR)
是一个字符串文字。
有 CMakePrintHelpers Cmake 模块,用于像上面一样转储变量。
include(CMakePrintHelpers)
cmake_print_variables(PROJECT_SOURCE_DIR)
除了使用message
,您还可以使用cmake_print_variables
来显示变量。 在这种情况下,您必须包括CMakePrintHelpers
include(CMakePrintHelpers)
cmake_print_variables(PROJECT_SOURCE_DIR)
输出将是:
-- PROJECT_SOURCE_DIR="path/to/your/project"
使用cmake_print_variables
您还可以显示多个变量,如下所示:
cmake_print_variables(PROJECT_SOURCE_DIR ANOTHER_VARIABLE)
输出将是:
-- PROJECT_SOURCE_DIR="path/to/your/project" ; ANOTHER_VARIABLE="other variable"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.