ass*_*tor 4 c++ configure cmake c-preprocessor
我正在使用现有项目并清理CMake.但是,现在我对如何将CMake选项集成到实际源代码中感到有点困惑.
为了简单起见,假设我只想执行一块代码,比如说cout << "print";,example.cpp如果在CMake ENABLE_PRINT上设置了值,则执行内部代码ON.
项目目录如下所示:

使用上面的例子,我做了以下事情:
CMakeLists.txt,我补充说OPTION( ENABLE_PRINT "Enable Print" ON) Config.h文件中,我添加了#define ENABLE_PRINTConfig.h.in地处例如子项目,我加#cmakedefine ENABLE_PRINTexample.cpp,我包围了cout << "print";内部#ifdef ENABLE_PRINT和#endif进行这些更改后,项目将配置并生成就好了.但是,当我制作软件时,它会出错并且基本上告诉我,我所包围的代码块#ifdef根本没有被执行; 它被忽略了.换句话说,我采取的上述步骤除了"注释掉"我希望以ENABLE_PRINT为条件的代码块之外没有做任何事情.
那么,我将如何使这项工作?
你可以像这里一样option和add_definitionscmake 结合起来.由于一个简单的例子比一个长文本更清晰,这里有一点main.c:
#include<stdio.h>
int main(int argc, char *argv[])
{
printf("start\n");
#ifdef USE_DEBUG
printf("Using debug\n");
#endif
printf("end\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt是:
cmake_minimum_required (VERSION 2.6)
project (HELLO)
option(WITH_DEBUG "Use debug" OFF)
if (WITH_DEBUG)
MESSAGE(STATUS "WITH_DEBUG")
add_definitions(-DUSE_DEBUG)
endif()
add_executable (main main.c)
Run Code Online (Sandbox Code Playgroud)
您可以通过键入尝试cmake .或cmake . -DWITH_DEBUG=ON然后make和./main
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |