cmake相关内容

如何创建一个依赖于外部头文件的 cmake 头文件库?

我有一个具有以下文件结构的项目: 项目||------->库1||---->库1.h||------->库2||---->lib2.h||------->主文件 lib1 和 lib2 两个库只包含头文件,而 lib2.h 包含 lib1.h,和 main.cc 包括 lib2.h. 我现在如何为这个项目编写 cmake 文件?我试图为 创建一个 接口库lib2,但是编译器找不到lib1 ..
发布时间:2021-12-26 22:14:43 C/C++开发

如何让 CMake 创建一个 dll 及其匹配的 lib 文件?

我正在使用 CMake 通过 Visual Studio 2010 创建共享库.该解决方案输出一个 dll 文件,但不输出匹配的 lib 文件.我如何告诉 CMake 生成 lib 文件,以便我可以将其他项目链接到 dll? 解决方案 首先检查您的共享库中是否至少有一个导出的符号.如果 dll 不导出符号,Visual Studio 不会生成 .lib 文件. 接下来,检查您的 cm ..
发布时间:2021-12-26 22:14:32 C/C++开发

添加“Qt5Widgets"的安装前缀;到 CMAKE_PREFIX_PATH

我对 cmake 了解不多,我正在尝试使用 cmake 和 Qt 构建客户端.收到以下错误: alethzero/CMakeLists.txt:26 (find_package) 处的 CMake 错误:不在此项目的 CMAKE_MODULE_PATH 中提供“FindQt5Widgets.cmake" 已要求 CMake 查找 提供的包配置文件“Qt5Widgets",但 CMake ..
发布时间:2021-12-26 22:14:23 C/C++开发

CLion 和 CMake:只构建一个没有可执行文件的库?

如何在没有可执行文件的情况下仅使用 clion 构建静态库?CMakeLists.txt 是什么样的?(没有add_executable) 更新:如果我不向 Clion 添加可执行文件,我有一个错误,需要可执行文件. 这里是我的 CMakeLists.txt. 解决方案 这是一个老问题.但我会将您的问题的答案添加为对其他人的帮助.您需要将 add_executable 替换为 ..
发布时间:2021-12-26 22:14:19 其他开发

find_package 和 pkg_search_module 有什么区别

关于这些命令,我​​现在只能说 pkg_search_module 有一些奇怪的用法,我必须在其中编写我想要两次的依赖项.而不是像在 find_package 中那样一次 pkg_search_module(ZLIB REQUIRED zlib)#seriously 两次 zlib 一次只大写‽find_package(ZLIB)#更干净但由于某些奇怪的原因 find_package 不能一直工 ..
发布时间:2021-12-26 22:14:10 其他开发

CMake 错误:TARGETS 没有共享库目标的 LIBRARY DESTINATION

在使用 CMake 构建开源项目时(在我的例子中,它是柠檬图库),当我尝试通过 -DBUILD_SHARED_LIBS=1 构建共享库时出现此错误: TARGETS 没有为共享库目标提供 LIBRARY DESTINATION 这个错误来自哪里,我该如何解决? 解决方案 在我的 CMakeLists.txt 中,我的 INSTALL 命令没有 LIBRARY 参数. 从此改变: ..
发布时间:2021-12-26 22:14:00 其他开发

一旦定义,可以向可执行文件添加更多源文件吗?

鉴于我在 CMakeList.txt 文件中定义了一个带有主要源文件的可执行文件: ADD_EXECUTABLE(MyExampleApp main.cpp) 我可以在此行之后向此可执行文件添加更多源文件,但在相同或包含的 CMakeList.txt 文件中吗? 解决方案 使用 target_sources,自 cmake 3.1 起可用 例如.target_sources(My ..
发布时间:2021-12-26 22:13:53 其他开发

库标题和#define

我不确定要搜索什么.如果这很简单,请原谅.但让我概述一下场景,看看有什么答案. 假设我有一个定义如下结构的库: struct 示例 {一个;#if B_ENABLED国际b;#万一}; 此头文件作为整个库安装的一部分进行安装.我的问题是,如果我的库定义了 B_ENABLED,它将具有包含这两个变量的结构.但是如果我的应用程序也没有定义它.然后它会将标头解释为定义一个只有一个成员的结构. ..
发布时间:2021-12-26 22:13:45 C/C++开发

如何在 CMake 中更改 Win32 版本的可执行输出目录?

我的问题是这样的:我正在使用 Visual Studio 2010 开发一个小型解析器.我使用 CMake 作为构建配置工具. 但我发现默认的可执行文件构建行为很不方便.我想要的是,让我的最终程序位于: E:/parsec/bin/..exe 而不是 E:/parsec/bin//.exe 你会如何使用 CMake 做到这一点? 解决方案 有几个选项: 编译后复制可执行 ..
发布时间:2021-12-26 22:13:25 C/C++开发

CMake 可以生成配置文件吗?

我需要将配置文件从 C++ 转换为 JS,我正在尝试在项目中使用 emscripten.Emscripten 自带一个叫做 emconfigure 的工具,它取代了 autoconf 配置, 但是我正在构建的项目使用 cmake 作为构建系统,目前(1 月 12 日)emscripten 仅支持 autoconf - 所以我通过生成配置并在 make 上做一个端口来绕过它,所以有一个从 cm ..
发布时间:2021-12-26 22:13:18 C/C++开发

使用 cmake 从复杂项目中仅安装一个目标(及其依赖项)(对更好的解决方案持开放态度)

假设我有一个由几个子项目 A、B、C、D 组成的项目......所有子项目都依赖于 A,它的变化相当频繁.另外,可能还有一些进一步的依赖:在这个例子中,D 依赖于 B. 现在:很多人都在从事这些项目.主 CMakeLists.txt 文件应包含所有目录,以便构建全部构建所有内容.但是人们也希望能够只在其中一个项目上工作,而不必每次都构建/安装所有内容. 如果我正在研究 D,我可以通过调 ..
发布时间:2021-12-26 22:13:10 其他开发

“ld:未知选项:-soname"在 OS X 上

我尝试在 Mac OS X 上使用 CMake 构建我的应用程序,但出现以下错误: 链接CXX共享库libsml.sold:未知选项:-sonamecollect2: ld 返回 1 个退出状态make[2]: *** [libsml.so] 错误 1make[1]: *** [CMakeFiles/sml.dir/all] 错误 2make: *** [all] 错误 2 这很奇怪,因为 M ..
发布时间:2021-12-26 22:12:35 其他开发

通过“find_package"获取导入的目标?

Qt 5的CMake手册使用find_package 并说: 为每个 Qt 模块创建导入的目标.应首选导入的目标名称,而不是在 target_link_libraries 等 CMake 命令中使用 Qt5_LIBRARIES 等变量. 它是 Qt 专用的还是 find_package 为所有库生成导入目标?CMake 3.0 中find_package 的文档 说: 当找到包时 ..
发布时间:2021-12-26 22:12:25 其他开发

在 setup.py 中使用 CMake

对于一个项目,我构建了一个 C 库并使用 CMake 隐含 Python 绑定(通过 GObject 自省).我还想使用 distutils 分发一些 Python 帮助程序模块.我可以使用这个 CMakeLists.txt 构建和安装模块 find_program(PYTHON "python")如果(Python)设置(SETUP_PY_IN“${CMAKE_CURRENT_SOURCE_ ..
发布时间:2021-12-26 22:12:21 其他开发