c++ - 如何在 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
当我cmake ..
在build
目录中运行时,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
How can I print the value ofPROJECT_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)
推荐阅读
- avr - W5100 正在发送垃圾
- android - 从已安装旧版本的用户的手机中卸载应用程序
- bash - 保持 Hive 会话打开 EMR
- r - 如何将 lubricate 的 %within% 与 dplyr 结合使用?
- c# - C# 在内容中查找不存在的文件而不是显示内容
- r - R:修改图表
- postfix-mta - 设置 postfix 和 dovecot 并遇到真实性失败问题
- javascript - 如何在具有自动对焦元素的页面加载时滚动到网页顶部
- java - Hyperledger Indy:Java 包装器无法创建 DID
- camunda - MismatchingMessageCorrelationException:无法关联消息“onEventReceiver”:没有流程定义或执行与参数匹配