cmake相关内容

从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值

我试图在我的源代码树中包含几个第三方库,并对其构建系统进行最少的更改,以便于升级.他们和我一样都使用 CMake,所以在我自己的 CMakeLists.txt 中,我可以将 add_subdirectory(extern/foo) 用于 libfoo. 但是 foo CMakeLists.txt 编译测试工具、构建文档、我不需要的共享库,等等.libfoo 作者有先见之明通过选项控制这些 - ..
发布时间:2021-12-26 22:09:36 C/C++开发

列出 cmake 生成的 Visual Studio C++ 项目中的头文件

我正在为我们的产品构建一个基于 cmake 的构建系统.问题是由 cmake 生成的 Visual Studio 项目没有在解决方案浏览器中显示头文件. 我需要在 CMakeList.txt 中添加什么来列出头文件?首选的解决方案是不需要列出每个特定的头文件. 解决方案这是我带来的解决方案: file(GLOB_RECURSE INCS "*.h")add_library(myLib ..
发布时间:2021-12-26 22:09:27 C/C++开发

什么是 ALL_BUILD 和 ZERO_CHECK,我需要它们吗?

我创建了一个简单的 CMakeLists.txt: cmake_minimum_required(VERSION 2.8)项目(你好世界)add_executable (HelloWorld main.cpp) 然而,当我从 CMake 生成 VS2012 或 VS2010 项目时,我得到了这两个额外的条目 - ALL_BUILD 和 ZERO_CHECK.我不明白他们的目的,我需要他们吗? ..
发布时间:2021-12-26 22:09:18 C/C++开发

如何使用 cmake 设置 GDB 调试标志?

我尝试使用 设置调试标志 set cmake 中的命令,但我不确定要添加什么.有人告诉我诸如 DEBUG=true 之类的事情,但到目前为止我无法找到要设置的正确标志. 解决方案 如果你想在编译时为 debug 构建(包括源信息,即 -g),使用 cmake -DCMAKE_BUILD_TYPE=Debug 如果要构建发布版本,可以使用 cmake -DCMAKE_BUILD ..
发布时间:2021-12-26 22:09:11 C/C++开发

默认在 CMake 中优化

我有一个 C++ 项目,它使用 CMake 作为其构建系统.我想要以下行为: 如果 cmake 被调用为 cmake ..,那么 CMAKE_CXX_FLAGS 是 -O3 -Wall -Wextra 如果 cmake 被调用为 cmake .. -DCMAKE_BUILD_TYPE=Debug,那么 CMAKE_CXX_FLAGS 是 -g -Wall -Wextra 我尝试了 ..
发布时间:2021-12-26 22:09:02 C/C++开发

如何从 cmake `file(GLOB ... )` 模式中排除单个文件?

我的 CMakeLists.txt 包含这一行: file(GLOB lib_srcs Half/half.cpp Iex/*.cpp IlmThread/*.cpp Imath/*.cpp IlmImf/*.cpp) 和 IlmImf 文件夹包含 b44ExpLogTable.cpp,我需要从构建中排除. 如何实现? 解决方案 您可以使用 list 函数来操作列表,例如 ..
发布时间:2021-12-26 22:08:56 其他开发

C为多个项目创建一个构建目录

我是 CMake 的初学者.我的环境有几个项目,例如: 项目|------ CMakeLists.txt(主Cmake)|------ 项目A||----- .cpp 文件||----- .hpp 文件||----- CMakeList.txt|------ 项目B||----- .cpp 文件||----- .hpp 文件||----- CMakeList.txt||------ 构建||-- ..
发布时间:2021-12-26 22:08:52 C/C++开发

如何让 CMake 在 Mac OS X 上使用 GCC 而不是 Clang?

我找不到有关它的任何信息,只能找到相反的信息(例如,如何将 CMake 设置为使用 clang). 我已经使用 brew 安装了 gcc-4.8,设置了所有依赖项、头文件等,现在 CMake 拒绝使用 gcc. 我已经使用别名和实际条目设置了我的 bash 配置文件: export CC=/usr/bin/gcc导出 CXX=/usr/bin/g++别名 gcc='gcc-4.8'别 ..
发布时间:2021-12-26 22:08:42 C/C++开发

CMAKE_CURRENT_SOURCE_DIR 和 CMAKE_CURRENT_LIST_DIR 的区别

来自维基: CMAKE_CURRENT_SOURCE_DIR这是当前处理的CMakeLists.txt所在目录 CMAKE_CURRENT_LIST_DIR(自 2.8.3 起)这是当前正在处理的列表文件的目录. 来自文档: CMAKE_CURRENT_SOURCE_DIR: 当前正在处理的源目录的路径.这是 cmake 当前正在处理的源目录的完整路径. CMAKE_ ..
发布时间:2021-12-26 22:08:31 其他开发

CMake 究竟是如何工作的?

我不只是为了我自己问这个.我希望这个问题能成为许多和我一样的新手的参考,因为对于这么小的 CMakeLists.txt 文件 ,它对幕后到底发生了什么感到非常困惑 cmake_minimum_required (VERSION 2.6)项目(教程)add_executable(教程教程.cpp) 还有这么小的tutorial.cpp int main() { return 0;} 生成的 ..
发布时间:2021-12-26 22:08:26 其他开发

Autotools、Cmake 和 Scons 之间有什么区别?

Autotools、Cmake 和 Scons 之间有什么区别? 解决方案 事实上,Autotools 唯一真正的“可取之处"是所有 GNU 项目都在大量使用它. Autotools 的问题: 真正的 ARCANE m4 宏语法与冗长、扭曲的 shell 脚本相结合,用于测试“兼容性"等 如果你不注意,你会搞乱交叉编译能力(它应该清楚地注意到,诺基亚提出了 Scratchbo ..
发布时间:2021-12-26 22:08:18 其他开发

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

我在 C/C++ 上编写代码并使用 (GNU) Makefile 来编译代码.我可以用 CMake 做同样的事情并得到一个 MakeFile.但是,使用 Makefile 和 CMake 编译代码有什么区别? 解决方案 Make(或者更确切地说是 Makefile)是一个构建系统 - 它驱动编译器和其他构建工具来构建您的代码. CMake 是构建系统的生成器.它可以生成 Makefi ..
发布时间:2021-12-26 22:08:14 C/C++开发

父 CMakeLists.txt 覆盖子 CMakeLists.txt 输出目录选项

我试图将项目中的库放入构建输出中的某个目录中,但父 CMakeLists.txt 正在覆盖输出设置.父 CMakeLists.txt 将所有库设置为放置在/lib 目录中. 但是,我的一个库需要放入/python 库中.我在 Windows 上的设置.意思是,除了我的 python 特定库之外的所有库都放在/lib 文件夹中,而 python 库放在/python 文件夹中. 当我在 ..
发布时间:2021-12-26 22:08:05 服务器开发

使 CMake Visual Studio 中的所有项目都依赖于一个项目

在我的项目中,我有大约 250 个项目,其中一个主要项目使用了大部分项目.当主项目运行时,所有项目都是最新的,这一点很重要.所以基本上,Visual Studio 应该在编译(和运行) MainProject 时检查所有 250 个项目的更改.我的 CMakeLists.txt 文件看起来像这样. Root/CMakeLists.txt ....add_subdirectory (Main ..
发布时间:2021-12-26 22:07:50 其他开发

如何从命令行设置类型列表的 CMake 变量

我正在尝试做这样的事情 cmake .. -G "Visual Studio 15 2017 Win64" -DCMAKE_CONFIGURATION_TYPES=ReleaseDebug 但是 CMAKE_CONFIGURATION_TYPES 未设置为 list 变量.我也试过 cmake .. -G "Visual Studio 15 2017 Win64" -DCMAKE_CONFI ..
发布时间:2021-12-26 22:07:35 其他开发

在我的 Cmake 项目中使用 Eigen Lib?

我在我的 CMake 项目中使用仅标头库 (Eigen) 时遇到困难.当我删除与 Eigen 库相关的所有部分时,它会编译,但不确定如何使用 (Eigen) 进行构建.请注意,Eigen 在 Eigen 文件夹中有一个 CmakeLists.txt,它有/src 文件夹,其中包含与矩阵运算等相关的(*.h 和 *.cpp)... 我的程序结构如下 Myproject(文件夹)由: ..
发布时间:2021-12-26 22:07:27 C/C++开发

CMake 是否总是为所有可能的项目配置生成配置?

我有调试和发布选项的特定配置(MSVC 和 GCC 不同).假设我们通过 cmake .. 生成默认项目.CMake 是否总是为所有可能的项目配置(调试和发布)生成配置,还是总是只获得一组配置选项? 解决方案 正如@cplusplusrat 所评论的,这取决于生成器/构建环境: 对于 MSVC 或 XCode 等多配置环境,是的. 对于 GCC 等单一配置环境,否. 单配置环 ..
发布时间:2021-12-26 22:07:20 C/C++开发

CMAKE_CXX_FLAGS 中的标志“-l"不起作用

我在我的 mac 机器上写了一些代码,它运行得很好,但是当我把它移植到 Linux 机器上时,我得到一个 对 curl_easy_init 的未定义引用 我的编译器标志包括用于链接的 -lcurl. 这是我的链接方式: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -L/curl/lib/dir -lcurl") 我试过有和没 ..
发布时间:2021-12-26 22:07:11 服务器开发

如何在实际构建/链接后让 cmake 创建时间戳文件?(如果可执行文件没有改变,什么都不做)

我想调用 date +"%s" >${TIMESTAMP} 对于我生成的三个可执行文件中的每一个,myapp_data、myapp_live 和 myapp_sim(即只创建时间戳如果创建了相应的可执行文件). 我似乎无法弄清楚为什么即使在我删除二进制文件并重新链接之后我的自定义命令也没有被执行.构建工作正常 - 只有时间戳生成不起作用. MACRO( MY_APP 标签)SET( BIN ..
发布时间:2021-12-26 22:07:01 其他开发