问题标签 [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 投票
4 回答
9389 浏览

python - 使用 CMake 查找 python 站点包目录

我使用 CMake 来构建我的应用程序。如何找到 python site-packages 目录的位置?我需要路径才能编译 python 的扩展。

当我计划在 Linux、Mac 和 Windows 上部署我的应用程序时,CMake 必须能够在所有三个主要操作系统上找到路径。

我尝试使用

然而那是行不通的。

我也可以通过运行获取路径

在外壳上,但我将如何从 CMake 调用它?

解决方案:

谢谢,亚历克斯。所以给我站点包目录的命令是:

需要 OUTPUT_STRIP_TRAILING_WHITESPACE 命令来删除尾随的新行。

0 投票
3 回答
3098 浏览

c++ - 将 ITK (Insight Toolkit) 集成到自己的项目中

我在将 ITK - Insight Toolkit 集成到另一个图像处理管道时遇到问题。ITK 本身是一个医学图像处理工具包,使用 cmake 作为构建系统。我的图像管道项目也使用 cmake。根据 ITK 的用户手册,最好使用 ITK 的 build(out of source)目录中的“UseITK.cmake”文件。您可以通过在您自己的项目的 CMakeList.txt 中添加以下几行来做到这一点。

我的问题是,这种方法指向 ITK 的当前安装,但我必须将 itk 完全集成到我的项目中,而不依赖于我的项目之外。itk 的 cmake 构建系统中是否有构建选项,它将所有头文件和 lib 文件转储/交付到构建目录中,因此我可以将它们自己放入我的项目中。我有一个我不想破坏的 lib 和 header 包含结构。我已经尝试手动将 lib 和头文件复制到我的项目中,但没有成功。

我是 itk 和 cmake 的新手,所以这个问题可能听起来很模糊。无论如何,我希望你们能帮助我。

提前致谢!

最好的祝福,

正补

0 投票
2 回答
1507 浏览

visual-studio-2008 - 生成VS 2008项目文件时设置PDB文件的相对输出路径

在生成 VS 2008 项目文件以使其成为相对路径时,是否有人能够使用 CMake 修改 PDB 文件的目标文件夹?似乎他们总是最终使用绝对路径,无论如何我都看不到可以轻松修改它。

例如,生成的 pdb 文件之一最终位于...

E:/3dconcert-builder/dt_src_REL-2.3.0/lib/Debug/../../bin/dtAnimd.pdb

而我需要它最终...

../../bin/dtAnimd.pdb

0 投票
6 回答
171549 浏览

linux - 如何使用 gcc/cmake 在 64 位 linux 机器上编译 32 位二进制文​​件

是否可以在32 位64 位系统上cmake编译项目?可能是,但我该怎么做呢?gcc

当我以“无知”的方式尝试它时,没有设置任何参数/标志/等,只是设置LD_LIBRARY_PATH在其中查找链接库~/tools/lib似乎忽略了它,只查看名为lib64的子目录。

0 投票
4 回答
10448 浏览

eclipse - 强制 Eclipse 生成标准的 Unix 生成文件

我有一个 Eclipse 项目,我已经做了一段时间了,我想开源它。但要做到这一点,我希望像大多数其他开源程序一样拥有一个干净的 Makefile。我知道我可以自己制作,但如果 Eclipse 可以为我管理它会更好。让 Eclipse 生成一个 CMake 文件会更好,但如果这是最简单的,我可以选择一个普通的 makefile。那么,我怎样才能让 Eclipse 做到这一点呢?互联网上有一些帖子建议在创建项目时选择“Managed make”,但它们是几年前的并且已经过时了。当我尝试创建一个 C 项目时,可以选择创建一个“Makefile 项目”,但它会在一个名为“Linux GCC”的文件夹中创建 makefile,并使一切变得混乱。有什么建议么?

0 投票
3 回答
7573 浏览

cross-platform - 构建涉及 cmake 的项目,我如何让它知道库

当我尝试在 64 位 linux (debian) 机器上使用 cmake 和 gcc 构建此项目时,链接器出现错误:

显然 dlopen、dlclose、dlerror 和 dlsym 是对 libdl.so 的引用。我在 /lib64/libdl.so.2 中有那个库,但为什么找不到呢?

会不会是一个普通的 './configure; 制作; make install'-path 我可以设置 LIBS 变量并发出这样的配置命令(我认为):

但是我现在该怎么做呢?

更新:

所以似乎找到了(或至少一个)库,但不包含有问题的符号。也许它尝试使用 /lib 中的 32 位库?

有没有办法反汇编 /lib64/libdl.so.2 以确保它确实有引用 dlopen 等?

现在问题似乎将构建工具引导到库的正确版本。

0 投票
1 回答
9141 浏览

testing - 在 cmake 中禁用测试

我尝试构建的项目的测试无法构建(缺少库)。测试本身并不重要,但会阻止我构建和安装基本文件。所以我想把它作为一个快速修复。

如何在 cmake 项目中打开测试的构建?我应该在根目录还是子目录测试中编辑 CMakeLists.txt 文件?我应该如何编辑它?

有一个命令 ENABLE_TESTING() 发出。我试图评论那个,但它没有帮助。还尝试重命名子目录测试。也没有帮助。这仅适用于正在构建“隐式”测试的特殊情况。

0 投票
2 回答
1316 浏览

c++ - 在 Qt 项目中将 CMake 与 Gnu 一起使用时包含问题

我正在启动一个多平台(Win Xp、Linux)qt 项目。我想使用源外构建,所以我的目录结构如下:

因此,当我在 Windows 上使用 Visual Studio 生成器时,一切正常。如果我在 Linux 或 Windows 下使用 MinGW 生成器使用相同的结构和 CMakeLists,则会出现编译错误,因为构建目录下的 qt 生成文件(通过 moc 和 uic)无法在我的子项目中找到我的头文件。一些 qt 生成的头文件/源文件依赖于我的头文件/源文件,因为我在 .ui 文件中使用提升的小部件,这些小部件指向我的源代码中的实现。再次在 Visual Studio / NMake 下一切编译正常。

作为一种解决方法,我可以使用运行良好的源代码构建,或者我可以在全局 CMakeLists.txt 中添加以下内容:

但是什么是正确的解决方案?非常感谢你!!

0 投票
2 回答
6071 浏览

testing - 如何使用 CMake 和 CTest 提供参数?

在我想使用 CTest 运行的测试中,我应该使用以下命令添加我想运行的测试:

问题是如果我想为 TestName 提供一个参数,我应该把它放在哪里?在这种情况下,如何在没有 cmake 的情况下在 unix 命令行中单独运行 ctest?

0 投票
3 回答
25180 浏览

cmake - cmake 宏中的可选参数

我想创建一个参数是可选的宏。如果未指定,则参数的值应为空字符串。我怎样才能做到这一点?