target_compile_definitions 未添加所需的定义

问题描述 投票:0回答:1

我对 cpp 和 cmake 非常陌生,我正在遵循(第 2 步)中的 CMake 教程,并尝试将其应用到一些简单的事情上 在我的库 CMakeLists.txt 中

add_library(Presentation presenter.cpp)

option(USE_PVERBOSE "should your logs be verbose" ON)

if (USE_PVERBOSE)
  message(STATUS "USE_PVERBOSE is: ${USE_PVERBOSE}")
  add_library(LogTime STATIC logtime.cpp)
  target_link_libraries(Presentation PRIVATE LogTime)
  target_compile_definitions(Presentation PRIVATE "USE_PVERBOSE")
endif()

如你所见,我有 target_compile_definitions 定义了 USE_PVERBOSE ,默认情况下它是打开的,但在我的 Presenter.cpp 代码中

#include <iostream>

#ifdef USE_PVERBOSE
  #include "logtime.cpp"
#endif

void present(std::string content) {
  #ifdef USE_PVERBOSE
    std::cout << "Using explicit logging" << std::endl;
    logWithTime(content);
  #else
    std::cout << "Using short logging" << std::endl;
    std::cout << content << std::endl;
  #endif
}

#ifdef USE_PVERBOSE
下的块永远不会被执行我不知道为什么它不起作用

c++ cmake
1个回答
0
投票

contrib/netsimulyzer/CMakeLists.txt:88 (target_compile_definitions) 处的 CMake 错误: 无法为目标“libnetsimulyzer”指定编译定义,即
不是由这个项目建造的。

© www.soinside.com 2019 - 2024. All rights reserved.