草庐IT

language-cmake

全部标签

c++ - 如何使用 CMake 强制 C++ 编译器使用不同安装包的版本之一?

我机器上安装的ROS富尔特使用的是opencv2.2。我想用刚刚安装的2.4.9版本。它的位置是/home/polar/soft/lib/opencv/opencv-2.4.9/build/lib。请问如何用CMake做到这一点?根据我的搜索,find_library似乎可以解决问题,但无法使其正常工作。=====我像这样在我的cpp代码中包含opencv#include#include#include#include"opencv2/imgproc/imgproc.hpp"===========这是我的CMAKEcmake_minimum_required(VERSION2.8)in

c++ - CMake:如何添加具有相对目录的 Boost.Test 用例?

我有一个使用CMake和Boost.Test的工作项目,其目录结构如下(请原谅ASCII艺术):+-proj|---CMakeLists.txt|---build|---test|\----dir1|\----foo.cpp//containsoneBOOST_AUTO_TEST_SUITEandseveralBOOST_AUTO_TEST_CASE||---bar.cpp//containsoneBOOST_AUTO_TEST_SUITEandseveralBOOST_AUTO_TEST_CASE\----dir2\----foo.cpp//containsoneBOOST_AUTO

c++ - CMake find_path 包含目录前缀

我正在为OpenNI编写一个最小的Find*.cmake。找到我写的头文件find_path(OPENNI_INCLUDE_PATHXnOS.h)按预期工作(OPENNI_INCLUDE_PATH的值为/usr/include/ni)。但是,在我的文件中,我必须包含标题#include我怎样才能去掉ni前缀,这样我就可以写了#include第一个包含的问题是包含了XnCppWrapper.h,并且此文件再次包含一些Xn*.hheader,但没有ni前缀。这会导致编译器错误。 最佳答案 总是有您用于find_path的路径匹配您的#i

c++ - DistCC 和 CMake - 在运行 make 时在本地和分布式构建之间进行选择

我的项目是使用CMake构建的,并使用DistCC+GCC编译。我按如下方式配置编译器:SET(CMAKE_C_COMPILER"distccvariation-of-gcc")要构建项目,我只需运行“cmake”,然后运行“ma​​ke-jXX”。虽然distcc确实加快了速度,但有时我想在没有分发的情况下构建-我希望它在机器上本地构建。我知道我可以修改DISTCC_HOSTS以仅包含本地主机-但这仍然有distcc网络的开销,尽管它比其他机器的开销更快...我也可以通过再次运行cmake并使用自定义标志修改CMAKE_C_COMPILER来实现。但我正在寻找一种方法,只需将标志直接

c++ - 从 Gradle 迁移到 CMake for C++ 项目

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我们去年一直在为我们的C++项目使用Gradle,但随着项目复杂性的增加以及我们对库的使用/创建的增加,我发现自己在处理我对Gradle的了解不足的情况。网络上充满了对Gradle有用的资源,但它非常专注于Java。此外,我还没有看到很多C++项目使用Gradle。出于这些原因,我正在考虑转向CMake,因为我现在需要大量编辑构建脚本。迁移到CMake,一个更具战斗力的测试和无处不在的C/

c++ - CMake 库依赖项

这可能有点难以完整解释。我已经为我正在编写的一系列C++库设置了一个目录结构。我打算使用CMake来处理构建这些库。大多数情况下,这些库是完全独立的“子系统”,但在奇怪的地方,一个库需要访问另一个库中包含的头文件。这是我的目录结构。base├─cmake├─docs├─examples└─sources├─libA│├─include││└─libA││├─core.h││└─*.h│├─source││└─*.cpp└─libB├─include│└─libB│├─message.h│└─*.h└─source└─*.cpp在一些地方有CMakeLists.txt文件。主要的是在根目

c++ - 如何在 CMake 中添加 "-l"(ell) 编译器标志

在Ubuntu16上工作我使用g++main.cpp-lpq命令编译我的小项目。现在我使用Clion并想做与g++相同的事情。但是我无法在cmake文件中添加编译器标志并出现编译错误。cmake_minimum_required(VERSION3.5.1)project(day_g)set(CMAKE_CXX_FLAGS"-lpq")add_definitions(-lpq)message("CMAKE_CXX_FLAGSis${CMAKE_CXX_FLAGS}")set(CMAKE_CXX_STANDARD11)set(SOURCE_FILESmain.cpp)add_executa

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part III

用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartIII用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartI_松下J27的博客-CSDN博客用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartII_松下J27的博客-CSDN博客      前面已经知道了如何在opencv.sln的项目中查看源码,现在看看怎么在自己创建的项目中调用opencv的库,并在debug的模式下查看源码

c++ - CMake 和处理子文件夹头文件

我正在尝试设置我的项目以构建多个包含其完整功能的动态库。每个库都有子文件夹。子文件夹库相互依赖,因此它们必须相互引用函数。我似乎已经设法让CMake在项目上没有错误地运行,但是当我去构建时,我的标题找不到彼此时遇到了麻烦。似乎在构建时,包含路径设置不正确。我怎样才能解决这个问题?是否需要采取其他步骤才能正确设置包含路径?结构看起来像这样rootCMakeLists.txtbinliblib0CMakeLists.txtlib0.hlib0.cpplib1CMakeLists.txtlib1.hlib1.cpp...在根目录的CMakeLists.txt中,我有这样的声明:set(ROO

c++ - CMake:如何根据不同的主条目进行编译

假设我有两个main条目,一个在main1.cpp中,一个在main2.cpp中(还有其他文件也是,但只有两个主要条目)。如何配置CMakeLists.txt文件,以便我可以根据不同的目标包含main1.cpp或main2.cpp?即我最终将能够使用“maketarget1”生成基于main1.cpp的exec1和“maketarget2”生成基于exec2main2.cpp以及其他文件。 最佳答案 听起来像是用除主电源之外的所有资源制作图书馆的案例。然后只需添加两个可执行目标,每个都链接到库。add_executable(MyEx