CMake和Cpp条件编译(一)—CMake的条件编译

CMake和Cpp条件编译(一)—CMake的条件编译

在软件开发过程中,我们往往需要根据实际情况进行不同的编译,比如编译一个软件的Debug版本和Release版本,需要编译一个人软件的试用版和正式版等。在这样的情况下,条件编译就非常有用了,接来下我分为CMake的条件编译和CMake设置cpp的条件编译两部分来介绍。

1 CMake条件编译

在CMake中,我们可以通过调用message打印输出,来确定我们的选项是如何设置的。因为直接执行CMake ..输出的信息比较多,我们可以用同样的指令执行两遍来查看输出的效果。

1.1 CMake的define示例

  1. CMakeLists.txt 文件

  1. cmake ..的输出效果

define_default

  1. cmake .. -DDEBUG_LOG=1的输出效果

define_DEBUG_LOG=1

1.2 CMake的if示例

  1. CMakeLists.txt文件

  1. cmake .. -DDEBUG_LOG=ON的输出效果

  1. cmake .. -DDEBUG_LOG=OFF的输出效果

1.3 CMake中的数值比较

在CMake中,我们可以通过比较数值,来选择不同的操作,比如下面这个例子。数值比较我们使用的是LESS(小于)、EQUAL(等于)、GREATER(大于)

  1. CMakeLists.txt的示例

  1. cmake ..的输出

默认输出

  1. cmake .. -DPREV_VALUE=1 -DCUR_VALUE=2的输出(LESS)

LESS输出

  1. cmake .. -DPREV_VALUE=2 -DCUR_VALUE=2的输出(EQUAL)

  1. cmake .. -DPREV_VALUE=2 -DCUR_VALUE=1的输出(GREATER)

1.4 CMake中的字符串比较

在CMake中,我们可以通过STRLESS(小于)、STREQUAL(等于)、STRGREATER(大于)来进行字符串的比较,从而确定不同的编译选择。

  1. CMakeLists.txt的示例

  1. cmake ..的默认编译

String_default

  1. cmake .. -DPREV_VALUE=A -DCUR_VALUE=B的输出(STRLESS)

String_STRLESSS

  1. cmake .. -DPREV_VALUE=B -DCUR_VALUE=B的输出结果(STREQUAL)

  1. cmake .. -DPREV_VALUE=B -DCUR_VALUE=A的输出结果(STRGREATER)

以上就是对CMake的条件编译的简单介绍,如果有什么遗漏或者错误的地方,欢迎大家指出。

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

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

Leave a Reply

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