C++ 从外部.cpp或 .hpp 定义的宏

C++ Macro defined from outside .cpp or .hpp

本文关键字:定义 hpp 从外部 cpp C++      更新时间:2023-10-16

我想做一些类似在调试或发布模式下构建的应用程序的事情。

是否可以在.cpp或 .hpp 之外定义宏?

我正在使用CMake。我已经看到add_definitions(...)正在做这样的事情。我应该projproj_debug创建两个可执行文件,并为调试定义一个带有add_definitions(...)的宏吗?这是一个好方法吗?如果没有,你会建议我怎么做?

使用类似这样的东西:

target_compile_definitions(myproj PRIVATE $<$<CONFIG:Debug>:MY_DEBUG_MACRO>)

http://www.cmake.org/cmake/help/v3.0/manual/cmake-generator-expressions.7.html

http://www.cmake.org/cmake/help/v3.0/command/target_compile_definitions.html

http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html

这适用于所有生成器,并且是记录在案的、正确的、受支持的方式(并由我:)实现(。

Man g++ http://linux.die.net/man/1/g++

查找用于定义宏的 -D 选项

您可以配置生成文件以设置该选项 http://www.cmake.org/Wiki/CMake_Useful_Variables

set(CMAKE_CXX_FLAGS "-g -Wall -Dxxxx")
要在不同的

文件中定义宏,可以通过以下方式完成:

1( 您可以在任何其他.h文件中定义宏。 并将文件包含在.cpp文件中。 这可以帮助您在不同的文件中定义宏 要检查宏Debug and Release版本,请使用_Debug_Release宏。

2(另一种方法是使用@Soren告诉的方式。 使用set(CMAKE_CXX_FLAGS "-g -Wall -Dxxxx")

喜欢这个。我应该创建两个可执行文件 proj 和 proj_debug 并进行调试

没必要。

使用 cmake,您可以在配置项目时更改CMAKE_BUILD_TYPE变量。然后在您的CMakeLists.txt中,您可以执行以下操作:

if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
    add_definitions(-DMY_DEBUG_MACRO)
endif()

然后,您可以轻松地将项目配置两次(在两个目录中(:一次将CMAKE_BUILD_TYPE设置为 Debug,一次CMAKE_BUILD_TYPE设置为 Release