问题标签 [cmake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3003 浏览

cmake - cmake目录问题

我有两个与 cmake 相关的问题:首先,我无法找到包含文件夹中的包含,并且它找不到 main.cpp 文件,除非我将它放在与 CMakeLists.txt 相同的目录中。你能帮我么?

我有以下目录结构:

CMakeLists.txt 位于 /TRT,main.cpp 位于 /TRT/src,include 位于 /TRT/src/include。

我编写了以下 CMakeLists.txt 并将其放在 /TRT 中:

提前致谢

0 投票
2 回答
4035 浏览

python - 使用 cmake 找到正确的 Python 框架

我在 Snow Leopard 计算机上使用 macports 版本的 python,并使用 cmake 为其构建跨平台扩展。我使用 CMakeLists.txt 中的以下命令在系统上搜索 python 解释器和库

然而,虽然 cmake 在 中识别了正确的解释器/opt/local/bin,但它试图链接到错误的框架——即系统 Python 框架。

这会导致以下运行时错误

一旦我替换-framework Python东西/opt/local/Library/Frameworks/Python.framework/Python似乎按预期工作。

如何针对中找到的正确 Python 框架创建 cmake 链接

而不是系统一

?

0 投票
1 回答
3114 浏览

cmake - 使用 cmake 读取注册表值

在 Windows 7 机器上,我无法读取任何包含分号的注册表值。

例如,如果您有 7-zip,则运行以下命令

结果是

而不是按照以下线程的实际路径。我认为 cmake 支持包含“;”的注册表路径 在 Windows 7 上坏了。有人可以确认吗?有什么解决方法吗?

0 投票
1 回答
1776 浏览

visual-studio-2008 - CMake:如何根据构建类型生成不同的共享库名称

这是我第一次使用 CMake,我正在尝试构建 QJSon,一个用于 Qt 4.x 的 JSON 解析器。我想要的基本上是根据构建配置构建不同的输出库名称。我正在使用${CMAKE_BUILD_TYPE}宏来生成不同的目标(qjson.lib/qjson.dll 和 qjsond.lib/qjsond.dll)。似乎 VS 2008 解决方案始终使用 qjson 名称构建(调试构建时没有 qjsond)。

我可怕的 Makefile 指令部分如下:

有任何想法吗?当然有一个更简单的配置。谢谢你。

0 投票
3 回答
225 浏览

c++ - (c)make - 递归编译

假设我有如下目录:

假设main.cpp包含dir2/abc.cpp和dir3/def.cpp,def.cpp包含dir4/ghi.cpp和dir4/jkl.cpp。

我的问题是,如何在 dir1/ 中有一个Makefile/CMakeLists.txt,它递归地进入每个目录并编译 *.cpp,然后“加入”它们?

对不起我的英语,希望我能很好地解释我的问题!

谢谢!

0 投票
3 回答
2089 浏览

cmake - 在 CMake 中为每个开发人员自定义安装输出目录的正确方法是什么?

我一直在开发一个旧游戏,我创建了 CMake 文件以摆脱 Makefile 和 Visual Studio 项目的混合。一切运行良好,但我很难弄清楚在运行安装时允许开发人员指定将输出文件复制到何处的正确方法。

问题是有许多 DLL 和一些自定义目标需要将它们的输出复制到包含游戏数据(关卡、艺术、声音等)的目录结构中,然后才能测试代码。

我的安装命令当前使用我在顶层 CMakeLists.txt 中“设置”的变量来指定输出目录。我尝试在 cmake 命令行上用 -DD3_GAMEDIR 覆盖它。该变量在 CMakeCache 中设置,但 SET 命令似乎仍然覆盖它。

在使用 SET 来查看用户是否指定了值之前,我是否应该检查变量的长度?这对我来说似乎是一个黑客,但我很难找到正确的方法来做到这一点。

谢谢!

0 投票
2 回答
3858 浏览

iphone - 如何使用 CMake 添加额外的 plist 属性?

我正在尝试添加项目

到我由 CMake 自动生成的 plist 中。对于某些键,似乎有预定义的添加项目的方法;例如:

但我找不到添加任意属性的方法。

我尝试MACOSX_BUNDLE_INFO_PLIST按如下方式使用目标属性:我希望生成的 plist 与旧的相同,除了我想要的新属性,所以我只是复制了自动生成的 plist 并将其设置为我的模板。但是 plist 使用了一些 Xcode 变量,这些变量看起来也像${foo},CMake 对此表示不满:

解析字符串时cmake代码中的语法错误

语法错误,意外 cal_SYMBOL,期望 } (47)

未设置策略 CMP0010:错误的变量引用语法是一个错误。运行“cmake --help-policy CMP0010”以获取策略详细信息。使用 cmake_policy 命令设置策略并禁止显示此警告。此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

无论如何,我什至不确定这是不是正确的做法。我找不到一个好的例子或任何好的文档。理想情况下,我会让 CMake 像以前一样生成所有内容,然后添加一个额外的行。我能做些什么?

0 投票
3 回答
10108 浏览

c++ - CMake链接问题

我正在尝试使用 CMake 编译使用 C 库 GStreamer 的 C++ 应用程序。

我的 main.cpp 文件如下所示:

这有效:

如何使用 CMake 制作它?我的 CMakeLists.txt 文件如下所示:

输出给出链接器错误:

0 投票
9 回答
52263 浏览

c++ - 如何在 CMake 中使用 CCache?

我想做以下事情:如果 CCache 存在于 PATH 中,则使用“ccache g++”进行编译,否则使用 g++。我尝试编写一个小的 my-cmake 脚本,其中包含

但它似乎不起作用(运行 make 仍然不使用 ccache;我使用 CMAKE_VERBOSE_MAKEFILE 检查了这一点)。

更新:

根据此链接,我尝试将脚本更改为

但是 cmake 会抱怨使用编译器 ccache 的测试失败(这是可以预料的)。

0 投票
7 回答
3956 浏览

c++ - 能够预先编译依赖项的 C++ Buildsystem

我正在为 C++ 游戏项目设置构建环境。我们的主要要求是不仅能够构建我们的游戏代码,还能够构建它的依赖项(Ogre3D、Cegui、boost 等)。此外,我们希望能够在 Linux 和 Windows 上构建,因为我们的开发团队由使用不同操作系统的成员组成。

Ogre3D 使用CMake作为其构建工具。这就是为什么到目前为止我们的项目也基于 CMake。一旦在每个团队成员系统上手动设置了所有依赖项,我们就可以完美编译,因为 CMake 能够找到库。

问题是是否有一种可行的方法来自动设置依赖项。作为一名 Java 开发人员,我知道 Maven,但 C++ 世界中确实存在哪些工具?


更新:感谢您提供好的答案和链接。在接下来的几天里,我将尝试一些工具来看看满足我们的要求,从 CMake 开始。到目前为止,我确实与 autotools 分享过,而且我非常喜欢文档(autobook 非常好读),但我担心 autotools 并不打算在 Windows 上原生使用。

你们中的一些人建议让一些 IDE 处理依赖关系管理。我们由个人组成,他们使用所有可能的技术来编写从纯 Vim 到成熟的 Eclipse CDT 或 Visual Studio 的代码。这是 CMake 允许使用一些灵活性的地方,它能够生成本机项目文件。