草庐IT

c++ - 如何允许用户重新配置编译器以与 cmake 一起使用?

我想让用户运行一个cmake配置工具(例如ccmake或cmake-gui)来更改使用的编译器。这是必要的,因为我正在构建一个有时在集群上运行的跨平台程序(因此需要具有适当MPI构造的特定于集群的编译器)但有时在非MPI模式下运行。让我们假设编译器通常可以是平台期望的任何编译器(通常是gcc/g++或在最坏的情况下是MSVC),但是当我们使用MPI时,我们总是知道我们需要通过mpicc/mpicxx进行编译。我觉得下面的代码应该可以工作:cmake_minimum_required(VERSION2.4)option(USE_MPI"IsthisonanMPIsystem?"OFF)i

c++ - CMake 在 include_directories 中找不到正确的头文件/包含文件

当我尝试编译时,我再次收到“undefinedsymbolsforarchitecturex86_64”错误。我已经尝试了比我在这篇文章中实际记录的更多的东西(因为我已经忘记了我尝试过的所有内容)。这是一个非常简单的设置,应该使用CMake很容易编译...当我对此运行make时,它​​工作得很好。但我想将其转换为CMake以实现互操作性。如您所见,我在几个地方放置了“${HEADERS}”变量,我已经尝试了很多位置,但我一直收到错误。根据我放置${HEADER}的位置,它在技术上还可以生成“错误:生成多个输出文件时无法指定-o”的错误(如果它仅位于target_link_library

c++ - 我如何使用 CMake 按需构建 wxwidgets 并与之链接

我有以下情况:我正在开发一个依赖于许多第三方库的应用程序,其中包括wxwidgets我使用Linux作为我的构建主机系统为多个目标配置(x86、arm、Linux、Windows)构建应用程序由于上面提到的多个目标配置,我选择使用CMake的ExternalProject_Add函数从源代码构建这些第三方库。第三方库是在与我的应用程序的CMAKE_BINARY_DIR分开的位置“按需”构建的,这样我就可以删除我的应用程序的构建树,而不必重建第三方库(需要很长时间)。第三方库的位置因我构建它们的目标配置而异(很明显)。我是CMake的新手,我目前面临的问题是:我的应用程序中的源文件找不到

c++ - 如何在 CMake 的 CXX_FLAGS 中包含 `pkg-config --cflags --libs gtk+-2.0`

这是Makefile中的CFLAGS。CFLAGS=-I/usr/include/libglade-2.0-I/usr/include/gsl`pkg-config--cflags--libsgtk+-2.0`-lglade-2.0-lglut-I/usr/local/include/dc1394-ldc1394我想使用CMAKE而不是Makefile。这部分是我写的CMakeLists.txt文件。find_package(PkgConfigREQUIRED)pkg_check_modules(GTKREQUIRED"gtk+-2.0")#Addthepathtoitsheaderf

c++ - CMake:多库包导出中的依赖管理

我有一个名为MYLIBS的包,包含两个库,lib1和lib2,我想通过配置文件导出它们包裹。项目结构如下:├──Lib1│├──CMakeLists.txt│├──lib1-class.cpp│└──lib1-class.h├──lib2│└──CMakeLists.txt│├──lib2-class.cpp│├──lib2-class.h├──cmake│└──LIBSConfig.cmake.in├──CMakeLists.txt在lib2我有:add_library(lib2STATIC${SOURCE_FILES})target_include_directories(lib2

c++ - CMake Gcov c++ 创建错误的 .gcno 文件

我有一个CMakeLists.txt文件,我在其中添加了:set(CMAKE_CXX_FLAGS"-fprofile-arcs-ftest-coverage-pthread-std=c++11-O0${CMAKE_CXX_FLAGS}")它正在生成报告文件:project_root/build/CMakeFiles/project.dir/但它生成的文件具有扩展名.cpp.gcno、.cpp.gcda和.cpp.o。此外,它们与src文件不在同一文件夹中,后者位于:project_root/src/当我将报告文件移动到src/文件夹并执行时$gcovmain.cppmain.gcno:

c++ - 如何让柯南生成 FindXXX.cmake?

我一直在为我从事的项目之一使用的所有库创建带有conan的包。我已经为每个文件创建了一个conanfile.py,一切都很好。我已经为虚拟代码创建了一个conanfile.txt,以确保一切都按预期工作。我跑了conaninstal..--build=missing这已经编译了所有的包。我可以在我的CMake文件中使用${CONAN_INCLUDE_DIRS}和${CONAN_LIBS}。但是,我希望将柯南作为一种可选的处理方式,使用Find_package(...)作为获取库位置、链接和包含详细信息的方式。所以我很想看到NewinConan0.6!Nowconanprovidesau

c++ - 在 CMake 构建中更改库依赖项

我正在构建一个依赖于其他静态库的库,为了进行测试,我必须将其中一个库更改为测试版本。对于我的生活,我不知道如何使用CMake做到这一点。我的CMake设置如下所示:add_library(XSTATICx.cpp)add_library(YSTATICy.cpp)add_library(ASTATICa.cpp)target_link_libraries(AXY)add_executable(EXEmain.cpp)target_link_libraries(EXEA)这工作正常,但现在我想创建另一个使用TEST_X而不是X的可执行文件。这是一个简化的示例,但我有一个来自遗留系统的非常

c++ - 使用 Cmake 和 MinGW 编译 OpenCV 2.4.13

我在尝试使用Cmake和mingw编译opencv时遇到了这个问题。对于Cmake:源代码位于“C:\CPPLibraries\OpenCV-2.4.13\opencv\sources”构建二进制文件的位置是:“C:/CPPLibraries/OpenCV-2.4.13/opencv/build/x64/mingw”我已经使用Cmake生成了makefile。当我运行makefile时:C:\CPPLibraries\OpenCV-2.4.13\opencv\build\x64\mingw>mingw32-make这是我在31%之后得到的输出[31%]BuildingCXXobject

c++ - Google Test with CLion 未运行测试

我正在尝试使用googletest和CLion运行一个简单的测试。我认为我已经正确设置了cmake,并且能够“运行测试”。当我这样做时,它说没有找到测试。有任何想法吗?CMakeLists.txtcmake_minimum_required(VERSION3.7)project(expirement)find_package(ThreadsREQUIRED)set(CMAKE_CXX_STANDARD14)set(SOURCE_FILESmain.cppgetstring.cpptests.cpp)include(${CMAKE_ROOT}/Modules/ExternalProjec