草庐IT

CMAKE_C_COMPILER

全部标签

c++ - CMake发现不止一个main函数

我正在尝试编译一个只有一个main函数的项目,但是CMake找到了更多。我的CMakeLists.txt是这样的:cmake_minimum_required(VERSION2.8)project(my_proj)include_directories(".")add_subdirectory(main)add_subdirectory(resources)find_package(OpenCVREQUIRED)find_package(BoostREQUIREDCOMPONENTSsystemregexprogram_options)include_directories(${Boo

c++ - 模板参数推导 : which compiler is right here?

考虑以下代码:templateclassVector{};#includetemplatevoiddoWork(constVector&,conststd::array&){}intmain(){std::arrayarr;Vectorvec;doWork(vec,arr);}在这里Vector表示在第三方库中定义的类,std::array已知其元素计数为std::size_t.我试过用clang-3.6和g++-5.1编译它。Clang毫无怨言地工作,而g++给出以下错误:test.cpp:Infunction‘intmain()’:test.cpp:17:19:error:noma

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++ - 嵌套类显式特化 : different compiler behavior

以下代码compilesfinewithclang++6.0.0andg++7.3.0(compilationflagsare-std=c++14-Wall-Wextra-Werror-pedantic-errors)butfailstocompilewithvc++19.10.25017(compilationflagis/Za):templatestructA{templatestructB{};};templatetemplatestructA::B{staticvoidfoo();};voidA::B::foo(){}intmain(){}vc++编译错误信息:errorC29

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++ - 命名空间与类模板名称冲突 : different compiler behavior

不同的编译器showdifferentbehavior编译以下代码:namespaceN{namespaceFoo{templatestructFoo{};}}templateusingFoo=N::Foo::Foo;namespaceN{templatestructBar:Foo{};}intmain(){}测试的编译器及其编译标志:clang++5.0.0:-std=c++14-Wall-Wextra-Werror-pedantic-errorsg++7.2:-std=c++14-Wall-Wextra-Werror-pedantic-errorsvc++19.10.25017(V

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