标签: cmake

CMake中的调试与发布

在GCC编译的项目中,

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

c c++ gcc cmake

390
推荐指数
6
解决办法
41万
查看次数

寻找'cmake clean'命令来清除CMake输出

就像make clean删除makefile生成的所有文件一样,我想对CMake做同样的事情.很多时候,我发现自己在目录删除文件,如手动去cmake_install.cmakeCMakeCache.txtCMakeFiles文件夹.

是否有cmake clean自动删除所有这些文件的命令?理想情况下,这应遵循当前目录CMakeLists.txt文件中定义的递归结构.

cmake

373
推荐指数
13
解决办法
33万
查看次数

什么是CMake相当于'configure --prefix = DIR && make all install'?

我知道cmake . && make all install.这有效,但安装到/usr/local.

我需要安装到不同的前缀(例如,to /usr).

什么是cmakemake命令行安装,以/usr代替/usr/local

cmake

362
推荐指数
8
解决办法
18万
查看次数

如何在CMake中激活C++ 11?

当我尝试运行CMake生成的makefile来编译我的程序时,我得到了错误

C++ 98模式不支持基于范围的循环.

我尝试添加add_definitions(-std=c++0x)到我的CMakeLists.txt,但它没有帮助.我也试过这个:

if(CMAKE_COMPILER_IS_GNUCXX)
    add_definitions(-std=gnu++0x)
endif()
Run Code Online (Sandbox Code Playgroud)

当我这样做时g++ --version,我得到:

g ++(Ubuntu/Linaro 4.6.1-9ubuntu3)4.6.1

我也试过SET(CMAKE_CXX_FLAGS "-std=c++0x"),这也行不通.

我不明白如何使用CMake激活C++ 11功能.

cmake c++11

349
推荐指数
12
解决办法
35万
查看次数

通过cmake定义预处理器宏

如何通过cmake定义预处理器变量?

等效的代码是#define foo.

c++ cmake c-preprocessor

261
推荐指数
4
解决办法
18万
查看次数

使用CMake在GCC和Clang/LLVM之间切换

我有许多使用CMake构建的项目,我希望能够轻松地在使用GCC或Clang/LLVM进行编译之间进行切换.我相信(请纠正我,如果我错了!)使用Clang我需要设置以下内容:

    SET (CMAKE_C_COMPILER             "/usr/bin/clang")
    SET (CMAKE_C_FLAGS                "-Wall -std=c99")
    SET (CMAKE_C_FLAGS_DEBUG          "-g")
    SET (CMAKE_C_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
    SET (CMAKE_C_FLAGS_RELEASE        "-O4 -DNDEBUG")
    SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")

    SET (CMAKE_CXX_COMPILER             "/usr/bin/clang++")
    SET (CMAKE_CXX_FLAGS                "-Wall")
    SET (CMAKE_CXX_FLAGS_DEBUG          "-g")
    SET (CMAKE_CXX_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
    SET (CMAKE_CXX_FLAGS_RELEASE        "-O4 -DNDEBUG")
    SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")

    SET (CMAKE_AR      "/usr/bin/llvm-ar")
    SET (CMAKE_LINKER  "/usr/bin/llvm-ld")
    SET (CMAKE_NM      "/usr/bin/llvm-nm")
    SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")
    SET (CMAKE_RANLIB  "/usr/bin/llvm-ranlib")
Run Code Online (Sandbox Code Playgroud)

是否有一种在这些和默认GCC变量之间切换的简单方法,最好是作为系统范围的变更而不是项目特定的(即不只是将它们添加到项目的CMakeLists.txt中)?

另外,llvm-*在使用clang而不是gcc编译时是否有必要使用程序而不是系统默认值?有什么不同?

cmake llvm clang

256
推荐指数
9
解决办法
21万
查看次数

在GNU Make中使用CMake:如何查看确切的命令?

我使用CMake与GNU Make,并希望完全看到所有命令(例如编译器如何执行,所有标志等).

GNU make有--debug,但似乎没有任何其他选项有用吗?CMake是否在生成的Makefile中提供了额外的标志以进行调试?

cmake gnu-make

255
推荐指数
7
解决办法
14万
查看次数

247
推荐指数
5
解决办法
9万
查看次数

使用Makefile和CMake编译代码之间的区别

我在C/C++上编码并使用(GNU)Makefile来编译代码.我可以用CMake做同样的事情并获得MakeFile.但是,使用Makefile和CMake编译代码有什么区别?

c c++ makefile cmake

237
推荐指数
2
解决办法
9万
查看次数

如何使用CMake正确添加包含目录

大约一年前,我询问了CMake中的头依赖关系.

我最近意识到问题似乎是CMake认为那些头文件是项目外部的.至少,在生成Code :: Blocks项目时,头文件不会出现在项目中(源文件会出现).因此,在我看来,CMake认为这些标题是项目的外部,并且不会在依赖项中跟踪它们.

在CMake教程中快速搜索只指出include_directories哪个似乎没有我想做的...

向CMake发出信号通知特定目录是否包含要包含的标头的正确方法是什么,并且生成的Makefile应该跟踪这些标头?

c++ ubuntu cmake

208
推荐指数
7
解决办法
35万
查看次数

标签 统计

cmake ×10

c++ ×4

c ×2

autotools ×1

build ×1

build-system ×1

c++11 ×1

c-preprocessor ×1

clang ×1

gcc ×1

gnu-make ×1

llvm ×1

makefile ×1

scons ×1

ubuntu ×1