问题标签 [cmakelists-options]

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 回答
671 浏览

cmake - cmake 使用通配符作为 find_library NAMES 选项

在 cmake 中找到我们使用的库find_library(MyLibrary_LIBRARY NAMES mylibrary mylibrary10 mylibrary11 HINTS /path/to/library)mylibrary.so该命令mylibrary10.so告诉cmakemylibrary11.so.lib每个HINTS. 如果找到上述任何文件,则文件的路径将写入MyLibrary_LIBRARY变量。但是,由于我正在使用的库之一经常被更新——因此该库很快就会被重命名为mylibrary20.somylibrary21.so——我需要经常更新 cmake 脚本以反映更改。我想知道是否有一种方法可以在这里使用通配符,以便 cmake 会自动在mylibraryXX.so这里找到,这XX意味着两位数。

根据文档(https://cmake.org/cmake/help/latest/command/find_library.html),这似乎不受支持。如果是这种情况,是否还有其他解决方法?(创建从mylibraryXX.soto的链接mylibrary.so对我来说不太有效,因为我无法控制库。)

0 投票
1 回答
30 浏览

cmake - 我们如何从主 CMakeLists.txt 文件中引用外部 cmake 文件?

假设我有一些与 protobuf 相关的 cmake 代码作为驻留在CMakeLists.pro文件中的库,我需要将此库作为外部文件配置包含在内。怎么做 ?

0 投票
0 回答
45 浏览

c++ - 无法在 CMake 中设置 c++ 版本

我正在尝试使用 cmake 将 C++ 版本设置为 11,但尽管尝试了多种方法,但它似乎并没有做任何事情。我已将问题减少到 2 个文件:CMakeLists.txt

测试.cpp

我正在运行 CMake 版本3.17.20032601-MSVC_2,来自 Visual Studio 代码中的 CMake 扩展。

0 投票
0 回答
47 浏览

c++ - GLOB_RECURSE 抓取错误的源文件

我的源项目目录是这样的,

我需要用源 a.cpp 和 b.cpp 制作一个可执行文件,

我希望这会将 a.cpp 和 b.cpp 作为唯一的源文件,但是当我打印时

它也拾取了 test.cpp,我不知道为什么会这样。我的理解是 ${CMAKE_CURRENT_SOURCE_DIR}/src/*/ *.cpp,在这个语句中由于通配符 * 它会遍历 src 文件夹的每个子目录,然后使用 *.cpp 它会在每个子目录中附加所有 cpp 文件这些子目录。

0 投票
0 回答
104 浏览

c++ - How to set cmake option with ninja without calling vcvarsall.bat to compile x86 and x64 each of parent and child project?

I want to build project with Ninja in Visual Studio 2019 environment. To do this, I have to call vcvarsall.bat. I want to build parent project with x64 while build subproject with x86. When I call vcvars64.bat, I cannot compile subproject with x86. So I am going to set compiler with x64 and x86 env each of parent project and subproject. How to set this option in CMakeLists.txt file?

0 投票
0 回答
181 浏览

c++ - Cmake Boost库链接错误LNK1104:无法打开文件'libboost_random-vc142-mt-x64-1_74.lib'

我正在尝试制作使用 cmake 编译 C++ 代码的 node.js 本机插件...

CMakeLists.txt 文件

我正在使用内部依赖于 boost 的 websocketpp 库

在编译时出现此错误:

libboost_random-vc142-mt-x64-1_74.lib 存在于 boost_1_71_0/stage/x64/lib 文件夹
中并且此路径也添加到环境变量中......

0 投票
1 回答
221 浏览

cmake - CMake:基于标志的 target_link_libraries

已经链接了 4 个库,如果 FLAG 为 ON,则希望链接一个新库。

我希望它像

反正有没有在 cmakelists.txt 中实现这个?

0 投票
0 回答
63 浏览

c++ - CMake:如何在我的项目中链接库?

我创建了一个视觉工作室 hello world 项目。现在我想添加一个库 pugixml。我能怎么做?

在 CMakeList 中:

我的 pugixml 库是:

我怎样才能包含这个库?

0 投票
2 回答
3174 浏览

c++ - 在打开 cuda 后端的情况下配置 OpenCV cmake 构建时出现错误“CUDA 后端需要 cuDNN”

我的目标:

我的目标是配置 OpenCV 4.5.1-dev 的构建,支持 cuda、tesseract 和 QT,而不会出现任何 cmake 错误。

我遇到的问题:

当我按下 cmake gui 上的配置按钮时出现以下错误:

这是我收到的完整 cmake 日志消息:

我期望的是能够配置 cmake 构建而不会出现任何 cmake 错误。

帮助您重现问题的信息:

  • 这是我安装的 nvcc 版本:
  • 这是我的 cmake 构建配置: Cmake 构建配置 我将 cmake gui 配置为使用 Visual Studio 2019 编译 opencv
  • 我要构建的open cv版本 OpenCV 4.5.1-dev
  • 我使用的cmake版本是3.19.1
  • 以下是关于我安装的 Visual Studio 版本的信息:
  • 我的 GPU 是带有 2gb vram 的 nvidia gtx 1050 手机
  • 这是我的 cmake 更改:

尝试解决问题

错误:CUDA 后端需要 cuDNN。请解决依赖或禁用

尝试解决问题:

  1. 将 Cmake 选项指定为CUDA_ARCH_BINcuda sdk (11.2) 的版本。我认为标志是关于 cuda dnn 版本的
  2. 为我的 gpu 计算功能(版本)指定了 cmake 选项CUDA_ARCH_PTX,因为我认为它是关于Compute capability (version). 根据这篇维基百科文章,我知道我的计算能力是什么
  3. 我尝试按照在此线程中找到的 AbdelAziz AbdelLatef 的说明进行操作: 如何在 C++ 中处理“DNN 模块未使用 CUDA 后端构建;切换到 CPU”警告?但是它并没有帮助,因为已经启用了 cmake 标志,并且我已经将 opencv contrib 添加到了我的 cmake 配置中
  4. 我尝试指定 CUDA_ARCH_BIN 标志来6.1喜欢这个 关于 opencv 问题的问题评论,就像我指出的那样。按照他所说的,说我仍然有错误。
0 投票
0 回答
57 浏览

dll - 为什么不设置 cmake 安装前缀

我正在编译一个项目。在项目期间我收到错误setlocal if %errorlevel% neq 0 goto :cmEnd我研究了错误,似乎错误与读写权限有关。我了解到可以使用cmake_install_prefix值或禁用 UAC 来修复它。我禁用了 UAC 并将program files (x86)' 的所有者设为我的用户。问题没有得到解决。后来我尝试更改,CMAKE_INSTALL_PREFIX但我可能无法为其设置值。初始化cmake后,cmakeCache.txt显示路径还在程序文件中

我在项目名称之前使用此代码

我也试过这个

我仍然将路径作为程序文件获取,并且出现 setlocal 错误。可能是什么原因?如果我不使用它,我也会使用-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE它,没有错误,但我需要这个。

如果我把CMAKE_INSTALL_PREFIX="C:/Users/USERNAME/Desktop/memoryModule/path/xm"它从cli返回错误

请帮我编译它