我对 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
下的块永远不会被执行我不知道为什么它不起作用
contrib/netsimulyzer/CMakeLists.txt:88 (target_compile_definitions) 处的 CMake 错误:
无法为目标“libnetsimulyzer”指定编译定义,即
不是由这个项目建造的。