草庐IT

CMAKE_CXX_COMPILER

全部标签

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

c++ - CMake:使用静态库在一个项目中构建多个可执行文件

我正在从事一个项目,该项目包含3个服务器可执行文件和一个用于共享代码的库。我希望它是跨平台的,所以我使用CMake(因为Xcode无论如何都很痛苦)来处理构建过程。我在设置CMakeLists时遇到问题,以便在构建可执行文件时可以从同一级别的目录中包含库。这是目录结构(和CMake文件):tethealla2.0/CMakeLists.txtlibtethealla/CMakeLists.txtencryption/utils/patch_server/CMakeLists.txtlogin_server/CMakeLists.txtship_server/CMakeLists.txt

c++ - CMake 似乎忽略了 CMAKE_OSX_DEPLOYMENT_TARGET

我在OSX10.10.5上使用CMake3.3.2和Xcode7.1。我有一个使用CMake的小型C++项目。我希望它在OSX10.9或更高版本上运行。所以我修改了我的CMakeLists.txt来开始这个:cmake_minimum_required(VERSION3.3)set(CMAKE_OSX_DEPLOYMENT_TARGET"10.9")project(...然后我像这样创建Xcode项目:cmake-GXcode但是,生成的xcodeproj包似乎没有设置部署目标。当我在文本编辑器中打开包含的project.pbxproj文件时,没有提到MACOSX_DEPLOYMENT

c++ - CMake:编译 OpenCV 时找不到 CUDA 库

我正在使用CMAKE在Windows上编译支持CUDA的OpenCV3.0.0。当我点击“配置”时,出现如下错误:CMakeError:Thefollowingvariablesareusedinthisproject,buttheyaresettoNOTFOUND.PleasesetthemormakesuretheyaresetandtestedcorrectlyintheCMakefiles:CUDA_cufft_LIBRARY(ADVANCED)linkedbytarget"opencv_hal"indirectoryE:/dev-lib/opencv3/sources/mod

C++ typedef 和返回类型 : how to get the compiler to recognize the return type created with typedef?

#includeusingnamespacestd;classA{typedefintmyInt;intk;public:A(inti):k(i){}myIntgetK();};myIntA::getK(){returnk;}intmain(intargc,char*constargv[]){Aa(5);cout在这一行中,myInt未被编译器识别为“int”:myIntA::getK(){returnk;}如何让编译器将myInt识别为int? 最佳答案 typedef创建同义词,而不是新类型,因此myInt和int已经相同。问题

c++ - CMake - 自动解析预编译头的依赖关系?

到目前为止,至少据我所知,在CMake中没有标准的方法来指定以跨平台的方式向项目添加预编译头(PCH),因为C++编译器处理PCH的方式是供应商之间差异很大。对于G++,这通常是通过简单地添加一个自定义命令来解决的,该命令负责使用适当的输入调用编译器并让它生成PCH。我现在的问题是CMake不会解析你为自定义命令指定的依赖项的依赖项。例如,假定以下结构:pch.h|-dependA.h|-dependB.h...仅提供pch.h作为依赖项将导致在相应的makefile中生成适当的目标,它跟踪对pch.h。但是,CMake不解析insidepch.h的包含,因此不会识别对dependA.

c++ - 如何使用 CMake 测试 C++ 应用程序没有内存错误?

我在CMake中有一个C++项目,我已经实现了单元测试(使用GoogleTest)以及集成测试,即执行应用程序并使用正则表达式检查结果,例如add_test(NAMEMyAppIntegration.testRefitRunMseCOMMANDmy_application"--refit=true")set_tests_properties(MyAppIntegration.testRefitRunMsePROPERTIESPASS_REGULAR_EXPRESSION"mse\\=1\\.53611e\\-05")现在我想做与上面相同的事情,但运行应用程序来检测内存错误,例如只需运行

C++ 函数到指针的隐式转换 : which compiler is right? Clang 和 GCC 不同意

templatestructA{};voidfunc();Aa;//sameresultwithAa;此代码使用Clang(包括最新的8.0.0)编译,但不能使用GCC(包括最新的9.1)编译。GCC说:错误:'void()'不是模板非类型参数的有效类型哪个编译器是正确的,为什么?更新我猜GCC是错误的,因为以下代码在Clang和GCC上都可以编译:templatestructA{};voidfunc();Aa;//sameresultwithAa;因此与GCC在第一个示例中的报告相反,void()似乎是“模板非类型参数的有效类型” 最佳答案