Questions tagged «cmake»

CMake是一个跨平台的开源构建系统生成器。它生成用于构建系统的文件,例如用于多个集成开发环境的本机makefile,ninja-build和项目文件。


2
什么是ALL_BUILD和ZERO_CHECK,我需要它们吗?
我创建了一个简单的CMakeLists.txt: cmake_minimum_required(VERSION 2.8) project (HelloWorld) add_executable (HelloWorld main.cpp) 但是,当我从CMake生成VS2012或VS2010项目时,我得到了这两个附加条目-ALL_BUILD和ZERO_CHECK。我不明白他们的目的,我需要他们吗?

3
CMake并查找其他项目及其依赖项
设想以下情形:项目A是一个共享库,它具有多个依赖项(LibA,LibB和LibC)。项目B是一个依赖于项目A的可执行文件,因此还需要所有项目A的依赖项才能进行构建。 此外,两个项目都是使用CMake构建的,并且不需要为通过项目B使用而安装项目A(通过“安装”目标),因为这可能会对开发人员造成麻烦。 使用CMake解决这些依赖性的最佳方法是什么?理想的解决方案将是尽可能简单(尽管没有更简单)并且需要最少的维护。
76 cmake 

1
cmake变量范围,add_subdirectory
我在项目根目录中有一个CMakeLists.txt,在/ src文件夹中有一个。/ src文件夹中的一个仅包含具有.cpp文件(set (SOURCEFILES main.cpp foo.cpp))的变量,并且在我做的根目录CMakeLists.txt中包含add_subdirectory(src),以后再执行add_executable(MyApp ${SOURCEFILES})。 但是cmake给我错误 使用错误的参数数量调用了add_executable,未提供任何源 我如何获得cmake来查看变量?我读到cmake只知道全局变量,但事实并非如此……
76 scope  cmake 

12
VS 2015命令提示中不再存在rc.exe
我刚刚安装了Windows 10 Creators Update(版本10.0.15063)。 我安装了多个版本的Visual Studio(2012、2013、2015和2017)。我仅在几周前安装了VS 2017。 问题 在“ VS2015 x64本机命令提示符”中运行时,CMake(版本3.8.1)不再找到C / C ++编译器(在VS 2017命令提示符中运行时,它确实可以正常工作)。 再生产 内容CMakeLists.txt: project (test) add_executable (test test.cpp) (的内容test.cpp无关紧要。) 在VS2015 x64本机命令提示符中进行CMake调用: > mkdir build > cd build > cmake -G "Visual Studio 14 2015 Win64" .. CMake输出: -- The C compiler identification is unknown -- The …

4
CMake检查本地文件是否存在
在我的CMake脚本中,我想查看我的系统上是否有文件,如果有,请对它进行某些处理,否则对默认文件进行处理。这是代码: find_file( ${project_name}_${customer}_config ${ROOT}/configuration/${customer}/configuration.${project_name}.xml ) if(NOT ${${project_name}_${customer}_config} STREQUAL ${project_name}_${customer}_config-NOTFOUND ) configure_file(${ROOT}/configuration/${customer}/configuration.${project_name}.xml ${CMAKE_CURRENT_BINARY_DIR}/conf/configuration.xml) else() configure_file(${FAPP_ROOT}/configuration/Default/configuration.${project_name}.xml ${CMAKE_CURRENT_BINARY_DIR}/conf/configuration.xml) endif() 但是看来,这是行不通的。 检查CMake中是否存在文件的正确方法是什么?

13
在Android Studio中找不到CMake
我需要在需要LLDB,CMake和NDK的Android程序中添加C / C ++代码。我在SDK管理器中找到了LLDB和NDK,但是在那里缺少CMake。我尝试从CMake官方网站手动下载它,发现对于Android,我们需要SDK定制的CMake。 如您所见,没有像CMake这样的选项。 在哪里可以找到适用于Android的CMake版本? 我已经从网站上尝试了CMake,并在ndk-bundle / build文件夹中找到了它,但是两者都给出了如下相同的错误。从中可以得出什么结果以及如何解决该问题? Build command failed. Error while executing 'C:\Users\amishr33\AppData\Local\Android\sdk\cmake\bin\cmake.exe' with arguments {-HC:\Users\amishr33\AndroidStudioProjects\MyApplication\app\src\main\jni -BC:\Users\amishr33\AndroidStudioProjects\MyApplication\app\.externalNativeBuild\cmake\debug\armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=C:\Users\amishr33\AppData\Local\Android\sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\amishr33\AndroidStudioProjects\MyApplication\app\build\intermediates\cmake\debug\obj\armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=C:\Users\amishr33\AppData\Local\Android\sdk\cmake\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=C:\Users\amishr33\AppData\Local\Android\sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=15 -DCMAKE_CXX_FLAGS=-std=c++11 -DANDROID_TOOLCHAIN=clang -DANDROID_STL=gnustl_static} CMake Error: Could not create named generator Android Gradle - Ninja Generators Visual Studio 15 2017 …

16
找不到CMAKE_MAKE_PROGRAM
我已经通过CMake达到了尽头。它具有巨大的潜力,但是我似乎无法使其找到运行所需的基本系统工具(即make)。 症状 CMake和CMake GUI生成以下内容(删除CMakeCache.txt文件之后): Processing top-level CMakelists.txt for project swb CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. 我专注于寻找make这个问题,但是,由于CMake无法找到库和其他实用程序文件(链接器,nm,ar等),我也遇到了许多相同的问题。我下面列出的技术似乎使CMake在Linux下运行时可以找到这些文件。 系统 Windows 7(64位);MinGW的多个版本(32位/ 64位);Cmake 2.8.4; MinGW的NONSTANDARD安装位置(c:/ MinGW-32)。 我尝试过的东西 CMakelists.txt包含SET( CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE …
72 makefile  cmake  mingw 

3
如何使用CMAKE从命令行在Windows上构建x86和/或x64?
一种使用cmake在Windows上使用Visual Studio构建x86的方法如下: 启动x86的Visual Studio命令提示符 运行cmake: cmake -G "NMake Makefiles" \path_to_source\ 纳马克 一种使用cmake在Windows上使用Visual Studio构建x64的方法如下: 启动x64的Visual Studio命令提示符 运行cmake: cmake -G "NMake Makefiles" \path_to_source\ 纳马克 使用Cmake,如何编译一个或两个体系结构?(例如Visual Studio如何在IDE中执行此操作)


3
在CMake中添加多个可执行文件
我在C ++项目中的代码组织如下 我有几个.cpp和.h文件,其中包含我的班 我有几个.cxx文件必须针对这些.cpp文件和一些外部库进行编译。 现在,每个.cxx文件都有一个main()方法,因此我需要为每个文件添加与文件名称相同的不同可执行文件。 同样,这些.cxx文件可能不会链接到相同的外部库。 我想用CMake编写这个版本,我是一个新手,我该如何处理?
70 c++  build  cmake  executable 

4
在执行之前制作CMake打印命令
我正在使用Linux上的CMake构建的大型C ++项目。CMake运行正常,在模块和应用程序树中生成大量的Makefile。运行GNUmake会导致链接器错误。make在运行命令之前,如何获得确切的命令? -d选项不会打印命令,但是很多信息并没有帮助。 -n选项显示所有命令,但不运行它们,因此我无法确定问题出在哪里。从make -n检查标准输出,我看不到任何相关的命令。我怀疑某些命令会根据早期命令的结果进行更改,而Makefile的层次结构使您很难分辨出实际情况。 我看不到make手册页中的其他选项似乎有用。
70 linux  cmake  gnu-make 


2
从父CMakeLists.txt覆盖CMake中的默认option(…)值
我试图在我的源代码树中包括几个第三方库,并对其构建系统进行最小的更改,以便于升级。他们和我一样都使用CMake,因此我可以在自己的CMakeLists.txt中使用add_subdirectory(extern/foo)libfoo。 但是foo CMakeLists.txt编译了一个测试工具,建立了文档,一个不需要的共享库,等等。libfoo作者具有预见性,可以通过选项(option(FOO_BUILD_SHARED "Build libfoo shared library" ON)例如)来控制它们,这意味着我可以通过CMake命令行进行设置。但是我想默认关闭它,并且可以通过命令行覆盖。 我以前尝试set(FOO_BUILD_SHARED OFF)过add_subdirectory(extern/foo)。这样的效果是,在第二次及以后的构建尝试中不尝试构建共享库,而在第一次构建时则不尝试,这是我真正需要加快的速度。 这可能吗,或者我需要为这些项目维护分叉的CMakeLists.txt吗?

6
cmake不起作用,无法执行qmake
我正在使用Ubuntu 14.04。我正在尝试安装需要cmake的程序。当我跑步时,cmake src/我得到: qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory 我究竟做错了什么?
68 cmake  qmake 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.