草庐IT

language-cmake

全部标签

c++ - 如何防止CMake发布/IMPLIB

我有一个CMake构建,可以将/IMPLIB发送到Windows上的链接器。这在我的例子中是个问题,因为implib的参数与其中一个输入文件的路径相同。在我看来,在使用VisualStudio构建时,CMake总是发出/IMPLIB,并且无法修改传递的参数。有没有办法控制这种行为? 最佳答案 查看CMake的源代码cmComputeLinkInformation.cxx如果设置了CMAKE_IMPORT_LIBRARY_SUFFIX,它只会添加一个有效的/implib:...选项://Checkwhetherweshouldusea

c++ - 如何在 ROS Indigo 下正确链接 opencv3(使用 CMake)?

我无法将我自己安装的opencv3与ros分开链接。我收到这个错误../devel/lib/libirTest.so:undefinedreferenceto`cv::ORB::create(int,float,int,int,int,int,int,int,int)'../devel/lib/libirTest.so:undefinedreferenceto`cv::calcOpticalFlowPyrLK(cv::_InputArrayconst&,cv::_InputArrayconst&,cv::_InputArrayconst&,cv::_InputOutputArrayco

CMake Error at /usr/local/share/cmake-3.24/Modules/FindCUDA.cmake:859 (message): Specify CUDA_TOOL

问题从错误日志中可以看到,问题出在CMake无法找到CUDA工具包的根目录。错误消息是:CMakeErrorat/usr/local/share/cmake-3.24/Modules/FindCUDA.cmake:859(message):SpecifyCUDA_TOOLKIT_ROOT_DIR这意味着CMake需要知道CUDA工具包的安装位置,以便正确配置和构建denseflow。解决方式1为了解决这个问题,你需要设置CUDA_TOOLKIT_ROOT_DIR环境变量,指向CUDA的安装目录。通常,CUDA安装在/usr/local/cuda目录,但这可能因系统而异。你可以通过以下命令设置C

c++ - CMake 和 Clang 工具链接错误(树外)

我正在尝试编译RecursiveASTVisitorexampleofClang使用CMake文件。构建项目进行得很顺利,但是,由于对LLVM和Clang库的多个undefinedreference,链接C++可执行文件失败。我正在LLVM/Clang源文件树之外构建示例。这是我的CMakeLists.txt(我正在使用FindClang.cmakeandFindLLVM.cmakefromthisproject):cmake_minimum_required(VERSION2.8.4)project(ifcount)set(CMAKE_MODULE_PATH${CMAKE_CURRE

c++ - CMake:尝试将链接库添加到未在此目录中构建的目标

我在编译我的cmake项目中的一些单元测试时遇到问题。我的想法是将这些boost单元测试添加为可执行文件,以便我可以运行它们。无论如何,我收到了这个我不明白的错误,这就是说我无法链接我的cpp单元测试,必须链接它才能测试我构建的库。我尝试链接和添加为可执行文件的两个单元测试是DownloadTickers.cpp和GetTickersForLetter.cpp。我的目录结构如下:>Algo>build(thisiswhereIdo:cmake..whichgivesmeerrors)-CMakeLists.txt(toplevelcmake)-algo.h.ini-run.cpp>Ne

c++ - 将 CMake 对象库与共享库相结合

我有以下CMakeLists.txt定义了一个对象库和一个依赖于对象库的共享库,如下所示:add_library(fooOBJECTfoo.cpp)add_library(barSHAREDbar.cpp$)add_executable(bazbaz.cpp)target_link_libraries(bazPUBLICbar)我在链接baz时收到以下链接器错误:/usr/bin/ld:CMakeFiles/foo.dir/foo.cpp.o:relocationR_X86_64_PC32againstsymbol`_ZSt4cout@@GLIBCXX_3.4'cannotbeused

c++ - 使用 CMAKE 检查编译器中是否启用了 c++11 功能

我正在使用CMake开发一个项目。我的代码包含constexpr方法,这些方法在VisualStudio2015中允许,但在VisualStudio2013中不允许。如果指定的编译器支持该功能,我如何检查CMakeLists.txt?我在CMake文档中看到过CMAKE_CXX_KNOWN_FEATURES,但我不明白如何使用它。 最佳答案 您可以使用target_compile_features要求C++11(/14/17)特性:target_compile_features(targetPRIVATE|PUBLIC|INTERF

c++ - 使用 cmake 构建我的 C++ 项目的正确方法?

我已经为此苦苦挣扎了很长一段时间,而我使用cmake的冒险只导致了我非常确定不正确的骇人听闻的解决方案。我创建了一个由几个文件组成的库,如下:-libfolder-codepart1folder-CMakeLists.txt-codepart1.cpp-codepart1.hpp-codepart2folder-codepart3folder-lib.cpp-lib.hpp-CMakeLists.txt我写了一个CMakeLists文件来编译库(经过一些实验),我可以生成一个lib.a文件。现在我想将这段代码作为库包含在其他项目中,并通过lib.hpp中的接口(interface)访问

c++ - 自 Mojave 以来,链接在 Homebrew 软件的 cmake 中不起作用

我现在已经在两台计算机上重现了这个症状,cmake似乎不再在/usr/local/lib中查找(或者更准确地说,$(brew--prefix)/lib)用于Homebrew提供的库,因为我的机器升级到macOSMojave。尽管有一些方法可以避免这种情况(例如,使用EXECUTE_PROCESS搜索Homebrew程序前缀;将结果添加到LINK_LIBRARIES(...)命令),但没有一个是理想的。Mojave中发生了什么改变来打破这种行为?临时解决方法是将以下内容添加到CMakeLists.txt:#WARNING:Don'thard-codethispathLINK_DIRECT

c++ - CMake 在使用 android-cmake 工具链文件时找不到 Boost 库

我正在尝试为使用Boost库的代码创建一个CMake项目。我想为Android构建它,我正在使用这个项目作为引用:https://code.google.com/p/android-cmake/.我想使用我之前为android构建的Boost静态库,而不是将它们作为要编译的项目的一部分。这是我使用Boost的项目部分的CMakeLists.txt#BOOSTset(BOOST_ROOT/home/neb/workspace/SDLActivityCMAKE/jni/boost)set(Boost_INCLUDE_DIR/home/neb/workspace/SDLActivityCMA