C++ CMake:为#cmakedefine变量设置不同的名称
我知道您可以使用CMake的C++ CMake:为#cmakedefine变量设置不同的名称,c++,cmake,preprocessor-directive,C++,Cmake,Preprocessor Directive,我知道您可以使用CMake的配置_文件使CMake变量可用于您的程序。例如,我可以使用 #define ${CMAKE_BUILD_TYPE} 导致 #define Release 然而,为了使我的代码更易于阅读,我宁愿定义 #define BUILD_TYPE_RELEASE 有没有一个简单的方法来解决这个问题?这里有一个相当简单的方法来解决这个问题: 在CMakesLists.txt中: if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TY
配置_文件
使CMake变量可用于您的程序。例如,我可以使用
#define ${CMAKE_BUILD_TYPE}
导致
#define Release
然而,为了使我的代码更易于阅读,我宁愿定义
#define BUILD_TYPE_RELEASE
有没有一个简单的方法来解决这个问题?这里有一个相当简单的方法来解决这个问题: 在
CMakesLists.txt
中:
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Release)
endif (NOT CMAKE_BUILD_TYPE)
string (TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE_NAME)
configure_file (config.h.in config.h)
在config.h.in
中:
#define BUILD_TYPE_${BUILD_TYPE_NAME}
然而,我仍然很好奇是否有更优雅的解决方案。这更多是您首选的编程风格(配置文件与编译器定义)的问题 在您的情况下,我将使用或直接修改/追加目录属性(使用还支持多配置环境): 参考资料
${}
语法或使用不同的语言即可@usr1234567:这是如何更可读的
-比什么更可读?Asker并没有提供任何方法来实现这一点(将变量的值转换为大写)。他的“更具可读性”与使用配置头的C(或C++)代码有关,而与CMakeLists.txt脚本无关。
set_property(
DIRECTORY
APPEND
PROPERTY
COMPILE_DEFINITIONS "BUILD_TYPE_$<UPPER_CASE:$<CONFIG>>"
)
#ifdef NDEBUG
...
#endif