在GCC编译的项目中,
g++与一个嵌套库一起编译gcc?就像make clean删除makefile生成的所有文件一样,我想对CMake做同样的事情.很多时候,我发现自己在目录删除文件,如手动去cmake_install.cmake和CMakeCache.txt和CMakeFiles文件夹.
是否有cmake clean自动删除所有这些文件的命令?理想情况下,这应遵循当前目录CMakeLists.txt文件中定义的递归结构.
我知道cmake . && make all install.这有效,但安装到/usr/local.
我需要安装到不同的前缀(例如,to /usr).
什么是cmake和make命令行安装,以/usr代替/usr/local?
当我尝试运行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构建的项目,我希望能够轻松地在使用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与GNU Make,并希望完全看到所有命令(例如编译器如何执行,所有标志等).
GNU make有--debug,但似乎没有任何其他选项有用吗?CMake是否在生成的Makefile中提供了额外的标志以进行调试?
Autotools,Cmake和Scons之间有什么区别?
我在C/C++上编码并使用(GNU)Makefile来编译代码.我可以用CMake做同样的事情并获得MakeFile.但是,使用Makefile和CMake编译代码有什么区别?
大约一年前,我询问了CMake中的头依赖关系.
我最近意识到问题似乎是CMake认为那些头文件是项目外部的.至少,在生成Code :: Blocks项目时,头文件不会出现在项目中(源文件会出现).因此,在我看来,CMake认为这些标题是项目的外部,并且不会在依赖项中跟踪它们.
在CMake教程中快速搜索只指出include_directories哪个似乎没有我想做的...
向CMake发出信号通知特定目录是否包含要包含的标头的正确方法是什么,并且生成的Makefile应该跟踪这些标头?