问题标签 [cmake-modules]
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.
cmake - 使用 `find_package()` 排除 cmake 自己的分发模块
Cmake 包括各种分发模块(即,填充在Modules/
cmake 安装目录中;例如,/usr/share/cmake-3.5/Modules/FindBoost.cmake
)。
在开发包含名称与这些分发模块冲突的内部库的代码时,这会带来挑战,因为会find_package(Xyz)
找到分发模块 ( /usr/share/cmake-3.5/Modules/FindXyz.cmake
) 而不是用户模块 ( /home/user/opt/lib/cmake/Xyz-config.cmake
)。我尝试设置CMAKE_FIND_ROOT_PATH
and CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY
,但无济于事。
如何在评估时强制 cmake 排除其自己的分发模块find_package()
?
cmake - 如何定义目标以包含存储在单个目录中的多个库
我想创建一个允许目标包含存储在同一目录中的多个静态库的模块。
最终目标是允许-L<library dir> -l<staticlib-1> -l<staticlib-2> ... -l<staticlib-n>
在链接时包含目标。
我尝试过使用target_link_libraries
以下方法,但没有成功:
上面的代码片段会导致以下错误消息:
INTERFACE_LIBRARY 目标可能只有列入白名单的属性。不允许使用“LINK_DIRECTORIES”属性。
cmake 是否支持这种用例?如果是这样,它是如何完成的?
c++ - 如何在cmake中的项目之间添加_dependencies
我有一个如上所述的 CMakeLists.txt。正在尝试构建项目 abc。但要构建它,我还需要“a_certain_source_file.cpp”,它是来自另一个名为 xyz 的项目的自动生成的源文件。如果 xyz 是从同一个 CMakeLists.txt 构建的,那么 add_dependencies 工作不会有问题。我无法通过我现在拥有 CMakeLists.txt 的方式解决对“a_certain_source_file.cpp”的依赖。任何可以提供帮助的 CMake 爱好者或专家?
我在这里也看到了一个密切的匹配 - cmake: add_dependencies 不适用于外部项目,但我不需要下载任何东西。所以不确定这是否是我需要的。
c++ - 如何使用 CMake 在 macOS 上使用和链接 boost?
感谢所有帮助过的人!最终起作用的是改变:
至:
尝试将 boost 链接到我的程序时出现以下错误:
但是,当运行 cmake 命令时,cmake 会通知我它已找到 boost 和所需的组件:
-- Found Boost: /usr/local/lib/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.40") found components: program_options
我正在使用gcc
和g++
版本10.2.0
。我使用cmake -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_C_COMPILER=gcc-10
.
我已经尝试了以下 2 个链接选项,但是,它们都导致相同的错误:
target_link_libraries(cartogram CGAL::CGAL Boost::program_options ${FFTW_LIBRARIES})
和
target_link_libraries(cartogram CGAL::CGAL ${Boost_LIBRARIES} ${FFTW_LIBRARIES})
在我调用查找 boost(使用:)之前,我也尝试过包括add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)
(编辑:来自Boost Linking questionsfind_package(Boost 1.40 COMPONENTS program_options REQUIRED)
)。
附带说明一下,完全相同的 cmake 文件可以在 Ubuntu、Linux 上完美找到!
我该如何解决这个错误?
编辑:我什至不完全确定这是否是链接错误,因为当我根本不包含要链接的 boost 库时(因为我相信程序选项可以用作仅标头库),我仍然得到同样的错误!
编辑 2:这是我的全部 CMake 代码:
编辑3:这是我跑步时得到的cmake -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_C_COMPILER=gcc-10
:
c++ - 使用 CMake 在 C++ 中创建和链接共享库 .so
我创建了一个 C++ 类,在其中使用getrusage getrusage(RUSAGE_SELF, &usage)
计算 CPU 使用率。
我可以成功创建并链接shared library .so
我创建的一个,但是,我想 shared.so
在其他一些外部项目中使用同一个库。例如,如果我想将此链接.so
到在不同项目中生成的二进制文件。
这是我从源文件CMakeLists.txt
创建共享库的方法。libcpp_cpu_usage_library.so
${PROJECT_SOURCE_DIR}/src/cpu_usage.cpp
CMakeLists.txt 生成共享库
问题
它与cpp_cpu_usage_binary
生成到同一个 CMake 项目的二进制文件一起使用,但是,现在我想使用它libcpp_cpu_usage_library.so
是一些外部 CMake 项目。
例如,我想在外部 C++ 和 CMake 项目中使用该共享库。
我知道我必须将上面的二进制文件链接到,libcpp_cpu_usage_library.so
但是如何安装libcpp_cpu_usage_library.so
到usr/local/lib
或root
然后包含并链接到我的外部 CMake 项目中。
感谢并期待。
阿尔斯兰
cmake - 如何从 cmake 调用 ExternalProject 输出二进制文件?
我正在尝试使用以下方法将平面缓冲区嵌入到我的项目中:
flatbuf 是按预期构建的,所以这里没有问题。接下来我尝试将它用于实际的代码生成,如下所示:
我敢肯定,即使它有效,这也不是获得 flatc 路径的最佳FLATC
方法。"${CMAKE_BINARY_DIR}/bin/flatc"
实际上我得到FLATC == ../bin/flatc
.
因此我有两个问题:
- 我如何获得的绝对路径
CMAKE_BINARY_DIR
? - 调用 ExternalProject 构建的可执行文件的正确方法是什么?
cmake - 大家好,我发布了我在 ubuntu 16.04 lts 中遇到的错误。编译时
给出命令 cmake .. 后出现此错误
地理库已经安装 1.45-2 cmake 版本 - 3.5 boost 版本 - 1.75
发现提升 1.75。
找到 Boost 组件:
约会时间
发现提升 1.75。
找到 Boost 组件:
系统;program_options
-- 地理库:
/usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 处的 CMake 错误(消息):
找不到 GeographicLib(缺少:GeographicLib_INCLUDE_DIR GeographicLib_LIBRARY)(至少需要版本“1.45”)
调用堆栈(最近的调用优先):
/usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
cmake/FindGeographicLib.cmake:27 (find_package_handle_standard_args) CMakeLists.txt:63 (find_package)
这个错误应该怎么办..?
c - 如何在 cmake 中包含 .spt 文件
我正在使用 windriver compile rhow 开发一个嵌入式项目,以包含(range.spt)程序集文件以将其编译到 range.o。我尝试了以下步骤
c++ - CMake BUILD 未定义参考(findpng)
我对 CMake 还是很陌生,所以绝对欢迎提供反馈。所以,我正在尝试构建一个简单的应用程序,最终应该使用 library 创建一个 pdf libharu
。
我想我想出了如何链接图书馆。但我仍然收到 findpng 模块的构建错误(我想libharu
取决于它)
CMakeLists.txt:
cmd - '。' 不被识别为内部或外部命令、可运行程序或批处理文件。CMake 错误
我一直在尝试使用 CMake从 Github 存储库https://github.com/dllu/puppup运行此代码。成功构建文件后,命令
导致以下错误
以下是对应的 CMakeList.txt 文件的代码
提前致谢!