运行 c++ 与 CMake 时如何将调试信息打印到终端?

How to print out debug info to terminal when running c++ with CMake?

我正在阅读一个 C++ 项目,并希望在 运行 程序在 Linux 终端时打印出 #ifdef _DEBUG 消息。例如:

#ifdef _DEBUG
            
            cout  << s1 << endl;
#endif

目前不打印上面的debug信息,只打印logger信息如下:

logger_(MY_MODULE_LOG_ERROR, "config is null "); 

项目是通过cmake制作的。除了 src/ 及其子目录下的每个 CZMakeLists.txt 之外,它还有一个顶级 CMakeLists.txt 文件。顶层CMakelists.txt内容如下:

cmake_minimum_required (VERSION 3.12)

project (TAGS_NEW )
set(CMAKE_VERBOSE_MAKEFILE true)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC -w")
# gdb debug : -g

add_compile_options(
    -Wall
    -Wextra
    -Wstrict-aliasing
    -Wno-unused-parameter
    -Wno-missing-field-initializers
    -Wchar-subscripts
    -Wpointer-arith
    -Wformat
    -Wformat-security
    -Werror=format-security
    -fstack-protector-all
    -fPIE
    -fpie
    -fPIC
    -fpic
    -pipe
    -fdata-sections
    -ffunction-sections
)

option(DEBUG_OUTPUT "option for debug out" OFF)
if (DEBUG_OUTPUT)
    add_definitions(-D_DEBUG)
endif()

# option(DEBUG_GDB "option for gdb debug" OFF)
# if (DEBUG_GDB)
#     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -ggdb")
# endif()

# set(CMAKE_BUILD_TYPE "Debug") 
option(CMAKE_BUILD_TYPE "option for gdb debug" DEBUG)
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")


option(COMPILE_DLL "option for generate dynamic library" OFF)

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${TAGS_NEW_SOURCE_DIR}/output)

add_definitions(-D_Python_CALL  -D_ChaiScriptON)
include_directories(${TAGS_NEW_SOURCE_DIR}/third-party/include ${TAGS_MINING_NEW_SOURCE_DIR}/include )

# $(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())")
find_package( PythonLibs 2.7 REQUIRED )
include_directories( ${PYTHON_INCLUDE_DIRS} )

link_directories(${TAGS_NEW_SOURCE_DIR}/third-party/lib)

add_subdirectory (src)

execute_process(COMMAND sh genGlobal.sh ${TAGS_NEW_SOURCE_DIR} WORKING_DIRECTORY  ${TAGS_NEW_SOURCE_DIR})

我试图将下面一行中的 OFF 更改为 ON,但没有帮助:

option(DEBUG_OUTPUT "option for debug out" OFF)

我是 CMake 新手。如何打印出所有调试信息?

选项是从外部提供的,不能在 CMake 文件中修改。事实上,一旦它被设置在缓存中(在第一个 CMake 运行 之后),你 can't change 一个带有 option 命令的选项。所以 运行 你的 cmake 是这样的:cmake -DDEBUG_OUTPUT=ON .. 你会得到你的宏定义。