cmake相关内容

使用 Google 协议缓冲区的 CMake

我正在尝试使用 cmake 使用协议缓冲区构建我的小项目. 有一个根目录,其中包含许多子目录,其中包含许多库和可执行文件.我的第一个想法是将我的 .proto 文件放在一个子目录中,但是当我阅读 this answer 时,我做了一个库取而代之.但是当我尝试在我的可执行文件中包含一个消息头时,它找不到它. 错误信息: 致命错误:msgs.pb.h:没有那个文件或目录#include ..
发布时间:2021-12-26 22:12:13 C/C++开发

我如何告诉 cmake 我希望我的项目静态链接库?

我正在尝试使用 CMake 构建一个基于 OpenCV 的项目,该项目在 Linux 上运行.到目前为止,我的 CMakeLists.txt 文件看起来像 FIND_PACKAGE(需要 OpenCV)...TARGET_LINK_LIBRARIES(我的可执行文件 ${OpenCV_LIBS}) 但这会导致动态链接库.如何链接静态库? 解决方案 您只需在 CMake 中将 BUILD ..
发布时间:2021-12-26 22:11:56 服务器开发

使用 CMAKE 将字符串拆分为列表的常用方法是什么?

假设我有以下字符串: set(SEXY_STRING "我爱 CMake") 然后我想从 SEXY_STRING 获取 SEXY_LIST 这样我就可以了 list(LENGTH SEXY_LIST len) 和len等于3. 我在网上找到了几个宏,但我真的很想知道如何以“自然"的方式来做到这一点.这个操作看起来很基础,应用也很广泛. 解决方案 用 ; 替换分隔符.我看不到任 ..
发布时间:2021-12-26 22:11:40 其他开发

如何使用 CPack 构建 debian 包以执行 setup.py?

到目前为止,我的项目只有编译成不同二进制文件的 .cpp 文件,我设法配置了 CPack 以构建合适的 debian 包强>没有任何问题. 最近我编写了几个 python 应用程序并将它们添加到项目中,以及一些我也想合并到包中的自定义模块. 在编写了 setup.py 脚本后,我想知道如何以 setup.py 的方式将这些文件添加到 CPack 配置中code> get 会在用户使用 ..
发布时间:2021-12-26 22:11:23 Python

如何使用 CMake 包含某个 Qt 安装?

我们在每台开发 PC 上都有大量 Qt 副本——每个项目在第三方目录中都有自己的 Qt 副本.这是因为每个项目都是用自己的 Qt 开发和测试的;一个常见的情况是,我们需要为某个项目自定义构建 Qt.因此,由于上面提到的,我们有一个单独的 SVN 存储库用于保存各种 Qt 构建,并且在每个 Qt 项目中都有一个外部存储库,它指的是这些构建中的一个. 问题是,在使用 CMake 时,我们只能选择 ..
发布时间:2021-12-26 22:11:06 其他开发

如何让 CMake 基于 GCC 版本通过 std=c++14/c++1y 或 c++17/c++1z?

GCC 4.x 不接受 C++14 代码的 --std=c++14 开关 - 它需要 --std=c++1y 代替.更高版本采用 --std=c++1z 但(可能)不是 --std=c++17 尚未设置(在 2016 年编写).也许 C++11 也有类似的问题. CMake 是否有一些工具(也许作为一个模块)来根据 GCC 版本传递正确的开关? 解决方案 当想要指定特定的 C++ 版 ..
发布时间:2021-12-26 22:10:50 C/C++开发

使用 cmake,您如何确定每个构建类型的默认编译器标志?

我正在尝试配置我的构建系统,以便我的发布版本不包含额外的调试.但是我在 CMake 文档中找不到任何列出每个构建类型默认使用哪些编译器标志的地方,我宁愿不发明自己的做事方式. 此功能是否已经存在?在不诉诸试验和错误的情况下,我如何确定默认情况下为各种构建类型使用哪些标志? 解决方案 这篇博文 有一些有用的信息,以及这篇文章 描述了一些常见的反模式. CMake 开箱即用的四种构 ..
发布时间:2021-12-26 22:10:39 其他开发

如何添加最低编译器版本要求?

我想用 C++11 创建一个项目,我使用 CMake 作为我的构建系统. 如何在 CMake 配置文件中添加最低编译器版本要求? 解决方案 AFAIK,没有内置支持这样的东西,但你当然可以自己写: if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "your.requ ..
发布时间:2021-12-26 22:10:35 其他开发

如何在 CMake 中重命名库文件名?

某些库的文件名遵循不同的约定,例如 PAM 库 -- pam_unix.so,而不是 libpam_unix.so. 如何在 CMake 中覆盖目标库文件名以获得类似 new_thing.so 的内容而不是默认的 libnew_thing.so? 解决方案 您可以使用 set_target_properties() 函数和 PREFIX 更改前缀、输出名称和后缀/OUTPUT_NAM ..
发布时间:2021-12-26 22:10:23 其他开发

Catch lib(单元测试)和 CTest(CMake)集成

我正在寻找 Catch CatchLib 与 CMake 测试 (Ctest) 集成的成功示例.据我了解,这是必须解析应用程序输出的附加 cmake 脚本?有人已经写过这个了吗?大概分享了这个? ================================================= 更新(已找到解决方案): 我已将 cmake 脚本 提交给 CatchLib ,用于与 ..
发布时间:2021-12-26 22:10:17 C/C++开发

如何以跨平台的方式使用 CMake ExternalProject_Add 或替代品?

我想构建一个第三方项目,该项目已经将 CMake 作为我项目的 CMake 条带的一部分.ExternalProject_Add 就是为了这个目的,但我发现它只能与特定的生成器一起工作,我希望它可以轻松地在许多平台上工作. 例如,这是我的外部项目,为 zlib 添加了脚本,它有自己的 CMakeLists.txt: set(USE_PROJECT_CMAKE_MODULE_PATH "-D ..
发布时间:2021-12-26 22:10:07 其他开发

如何让 cmake 找到 CUDA

我正在尝试构建这个项目,它具有 CUDA 作为依赖项.但是cmake脚本在系统上找不到CUDA安装: cls ~/workspace/gpucluster/cluster/build $ cmake ..-- C 编译器标识为 GNU 4.7.1-- CXX 编译器标识为 GNU 4.7.1-- 检查工作的 C 编译器:/usr/bin/gcc-- 检查 C 编译器是否正常工作:/usr/bin ..
发布时间:2021-12-26 22:10:02 C/C++开发

什么是等效于“gcc -fvisibility=hidden"的 CMake?控制共享库的导出符号时?

我用 C++ 开发了跨平台软件.据我所知,Linux .so 默认导出所有符号,通过 "gcc -fvisibility=hidden" 我可以将所有导出的符号设置为隐藏,然后设置 __attribute__(visibility("default")) 用于我要导出的类和函数,以便我可以控制要导出的内容. 我的问题是,使用 CMake,我如何将工作作为“gcc -fvisibility=h ..
发布时间:2021-12-26 22:09:54 其他开发

#ifdef DEBUG 与 CMake 独立于平台

我正在使用 CMake 在 Windows (Visual Studio) 以及 Linux 机器 (gcc) 上构建我的项目.我想将一些代码标记为“仅调试",例如 #ifdef DEBUG//这里有一些日志#万一 问题是:CMake“调试"构建类型的所有平台上都有哪些编译器定义?DEBUG 好像不存在.(我只想在构建类型为 Debug 时进行日志记录或其他任何操作.) 解决方案 CM ..
发布时间:2021-12-26 22:09:44 C/C++开发

Cmake 生成器表达式

我很长时间都想了解 CMake post-build-event:复制编译的库 add_custom_command(目标我的二进制文件POST_BUILD命令 ${CMAKE_COMMAND} -E 复制“${CMAKE_CURRENT_SOURCE_DIR}/myTest.txt"“$/myTest.txt") 如何添加外部测试文件到一个 cmake 项目 区分例如DEBUG ..
发布时间:2021-12-26 22:09:40 C/C++开发