簡體   English   中英

如何在 CMake 中打印變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM