在GCC编译的项目中,

  • 如何为每种目标类型(调试/发布)运行CMake?
  • 如何使用CMake指定调试和发布C/C++标志?
  • 我如何表示主可执行文件将用g++编译,一个嵌套库用gcc编译?

推荐答案

使用CMake,通常推荐做"out of source" build分.在项目的根目录中创建CMakeLists.txt.然后从项目的根目录开始:

mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make

Debug英镑(同样是从项目的根本上):

mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Release/Debug将为您的编译器添加适当的标志.还有RelWithDebInfoMinSizeRel构建配置.


您可以通过指定一个toolchain file来修改/添加标志,您可以在其中添加CMAKE_<LANG>_FLAGS_<CONFIG>_INIT个变量,例如:

set(CMAKE_CXX_FLAGS_DEBUG_INIT "-Wall")
set(CMAKE_CXX_FLAGS_RELEASE_INIT "-Wall")

有关更多详细信息,请参见CMAKE_BUILD_TYPE.


至于你的第三个问题,我不确定你到底在问什么.CMake应该自动检测并使用适合不同源文件的编译器.

C++相关问答推荐

rSP堆栈指针在返回函数调用的值时有任何用途吗?

是否定义了数组指针类型转换为指针类型?""""

当main函数调用被重构时,C函数给出错误的结果

不同到达时间的轮询实现

将 typewriter LF打印到Windows终端,而不是隐含的CR+LF

自定义应用程序上的日志(log)轮换问题

为什么可以在typedef之前使用typedef d struct 体?

如何在C中通过套接字自定义数据类型读取原始变量?

GCC创建应用于移动项的单独位掩码的目的是什么?

有什么方法可以将字符串与我们 Select 的子字符串分开吗?喜欢:SIN(LOG(10))

如何使用_newindex数组我总是得到错误的参数

可变宏不能编译

链表删除 node 错误

如何将大写/小写土耳其字母相互转换?

未为同一文件中的函数执行DirectFunctionCall

函数指针作为函数参数 - 应该使用 const 吗?

std::malloc/calloc/realloc/free 与纯 C 的 malloc/calloc/realloc/free 有什么不同

10 个字节对于这个 C 程序返回后跳行的能力有什么意义

如何向 execl 创建的后台程序提供输入?

UEFI 应用程序中的计时器回调仅在 AMI BIOS 中挂起