CMake和cpp的条件编译(二)—通过CMake对cpp的条件编译进行设置

CMake和cpp的条件编译(二)—通过CMake对cpp的条件编译进行设置

在cpp中主要有以下几种设置条件编译的方式。

(1) #ifdefine {MACRO}或者#ifndef {MACRO}
通过定义了或者没有定义某个宏来开启或者关闭对应代码的编译。

(2) #if {MACRO}
通过某个宏的值为true(非0)或者false(0)来开启或者关闭对应代码的编译

(3) #if defined({MACRO1}) && defined({MACRO2}或者#if defined({MACRO1}) || defined({MACRO2})

通过某些宏的与/或条件,通过多个宏来开启或者关闭对应代码的编译,具体的使用看示例代码。在CPP中共有
DEFINE_CONDITION、UN_DEFINE_CONDITION、DEBUG_LOG、DEBUG_LOG_DEFINED、DEFINE_FIRST、DEFINE_SECOND、DEFINE_THIRD、DEFINE_FOURTH等,对于每一个选项在CMake中都通过在其后加SWITCH作为if条件来开启对应的宏。下面就对相关的代码和示例做说明。

  1. CMake的代码示例

  1. 对应的cpp的代码示例

  1. DEFINE_CONDITION宏相关

(1) DEFINE_CONDITION定义了
CMake条件编译指令cmake .. -DDEFINE_CONDITION_SWTICH=ON
程序运行结果
DEFINE_CONDITION_GOOD

(2) DEFINE_CONDITION未定义
CMake条件编译指令cmake .. -DDEFINE_CONDITION_SWTICH=OFF
程序运行结果
DEFINE_CONDITION_BAD

  1. UN_DEFINE_CONDITION宏相关

(1) UN_DEFINE_CONDITION定义了
CMake条件编译指令cmake .. -DUN_DEFINE_CONDITION_SWTICH=ON
程序运行结果
UN_DEFINE_CONDITION_GOOD

(2) DEFINE_CONDITION未定义
CMake条件编译指令cmake .. -DUN_DEFINE_CONDITION_SWTICH=OFF
程序运行结果
UN_DEFINE_CONDITION_BAD

  1. DEBUG_LOG宏相关
    (1) DEBUG_LOG定义了

CMake条件编译指令cmake .. -DDEBUG_LOG_SWITCH=ON

程序运行结果
DEBUG_LOG_DEFINED

(2) DEBUG_LOG未定义

CMake条件编译指令cmake .. -DDEBUG_LOG_SWITCH=OFF

程序运行结果
DEBUG_LOG_NOT_DEFINED

  1. DEBUG_LOG_DEFINED宏相关
    (1) DEBUG_LOG_DEFINED定义了
    CMake条件编译指令
    程序运行结果
    DEBUG_LOG_DEFINED

(2) DEBUG_LOG_DEFINED未定义
CMake条件编译指令
程序运行结果
DEBUG_LOG_DEFINED_NOT

  1. DEFINE_FIRST和DEFINE_SECOND宏相关

(1) DEFINE_FIRST和DEFINE_SECOND宏同时定义了
CMake条件编译指令cmake .. -DDEFINE_FIRST_SWITCH=ON -DDEFINE_SECOND_SWITCH=ON
程序运行结果
DEFINE_FIRST_SECOND_GOOD

(1) DEFINE_FIRST和DEFINE_SECOND未同时定义
CMake条件编译指令cmake .. -DDEFINE_FIRST_SWITCH=OFF -DDEFINE_SECOND_SWITCH=OFF
程序运行结果
DEFINE_FIRST_SECOND_BAD

  1. DEFINE_THIRD和DEFINE_FOURTH宏相关

(2) DEFINE_THIRD和DEFINE_FOURTH未定义
CMake条件编译指令cmake .. -DDEFINE_THIRD_SWITCH=OFF -DDEFINE_FOURTH_SWITCH=OFF
程序运行结果
NOT_DEFINE_THIRD_FOURTH_EITHER

(2) DEFINE_THIRD定义了
CMake条件编译指令cmake .. -DDEFINE_THIRD_SWITCH=ON
程序运行结果
DEFINE_THIRD_GOOD

(2) DEFINE_FOURTH定义了
CMake条件编译指令cmake .. -DDEFINE_FOURTH_SWITCH=ON
程序运行结果
DEFINE_FOURTH_GOOD

以上就是我的所有测试结果,如果有不完善的地方,欢迎在评论区留言交流。

除非注明,否则均为浮生笔记原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.dennisthink.com/2020/10/18/893/

Leave a Reply

Your email address will not be published. Required fields are marked *