草庐IT

c++ - CMake:如何仅将特定文件扩展名从一个目录复制到另一个目录

我正在使用以下自定义命令将config目录中的所有文件复制到build目录中。问题是我不想同时复制.svn目录。我正在寻找一种方法来排除.svn目录或复制具有特定扩展名的文件。例如我只想复制具有xml或conf扩展名的文件。我该怎么办?add_custom_command(TARGETMyTargetPRE_BUILDCOMMAND${CMAKE_COMMAND}-Ecopy_directory${CMAKE_SOURCE_DIR}/config$)relatedquestion 最佳答案 要仅复制.xml和.conf文件,您可以使

c++ - 在 CMake 的子目录中保持文件层次结构

到目前为止,我仍然不明白对于具有许多子目录的CMake项目执行此操作的“最佳实践”是什么。假设我有一个项目层次结构,每个子目录中都有源文件...--CMakeProjectSourcedir|--SubD1|--SubSubD1|--SubD2我通常会做的是add_subdirectory(SubD1)分别为根目录的CMakeLists.txt中的D2和SubD1目录的CMakeLists.txt中的子目录递归,同时在每个子目录中声明变量并使用PARENT_SCOPE使它们在根目录中可见。这意味着如果一个文件Source2.cpp存在于`SubSubD1'中,我会简单地做set(SUB

c++ - CMake 不会将 C 库链接到 C++ 程序

可能是我能想到的最短的工作示例:CMakeLists.txt:project(myprogs)cmake_minimum_required(VERSION2.8)add_executable(myprog2main.c)add_executable(myprogmain.cpp)add_library(mylibSHAREDmylib.c)target_link_libraries(myprog2mylib)target_link_libraries(myprogmylib)ma​​in.c/ma​​in.cpp(相同内容):#include"mylib.h"intmain(intar

c++ - CMake 链接错误 pthread:启用多线程以使用 std::thread:不允许操作

我有一个类似的错误C++Threads,std::system_error-operationnotpermitted?我正在使用完全相同的源代码并使用进行编译g++../src/main.cpp-pthread-std=c++11工作没有任何问题。因为我想在一个更大的项目中使用线程,所以我必须在CMake中使用线程。搜索解决方案后,我发现了几个代码,例如:cmake_minimum_required(VERSION2.6)project(Test)add_definitions("-std=c++11")find_package(Threads)add_executable(main

c++ - CMAKE include_directories

我正在尝试将我的图书馆与其他图书馆链接起来lib1使用CMAKE2.8.应该说是在Windows上。在CMakeLists.txt我有:add_library(mylib${sources})include_directories(${CMAKE_SOURCE_DIR}/lib1/include)target_link_libraries(mylib${lib1_path})但是编译器说一些#include在我的库中未解决,可能是因为没有-I.../lib1/includegcc的命令行参数.更新:应该说编译器在编译测试而不是mylib时提示. 最佳答案

c++ - 如何使用 CMake 链接多个库

我有一些与DCMTK有关的代码。如果我从命令行使用g++,我可以成功地构建和运行它。这是代码:#include"dcmtk/config/osconfig.h"#include"dcmtk/dcmdata/dctk.h"intmain(){DcmFileFormatfileformat;OFConditionstatus=fileformat.loadFile("test.dcm");if(status.good()){OFStringpatientsName;if(fileformat.getDataset()->findAndGetOFString(DCM_PatientsName

c++ - CMake 找不到源文件(add_executable)

我一直在努力遵循供应商的教程:CMake-Tutorial,查看此处的文档:Cmake-Documentation,并尽可能地利用YouTube上的资源进行self教育,但我真的很难为使用OpenGL设置环境。在修改了Glitter样板文件以及open.gl和learnopengl.com上的教程之后,我决定了解构建过程非常重要,不能不进行调查。在我的调查中,我遇到了CMake错误“找不到源文件”,详情如下所示。问题似乎是由“add_executable”引起的。此处提出了类似的问题:CMake-Cannotfindfile.解决方案涉及确保为每个变量正确设置${PROJECT_SOU

c++ - Qt4 不会用 CMake 编译

我现在在Linux下使用KDevelopforC++,我想编译一个Qt4应用程序,但是当我这样做时,它会给我以下错误:我编译:cmake-DCMAKE_INSTALL_PREFIX=/usr/local-DCMAKE_BUILD_TYPE=Debug/home/myname/projects/FirstQtprojet/这些是错误:--Configuringincomplete,errorsoccurred!CMakeErrorat/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97(MESSAGE):C

cmake应用:集成gtest进行单元测试

 编写代码有bug是很正常的,通过编写完备的单元测试,可以及时发现问题,并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。  在本系列前序的文章中已经介绍了CMake很多内容,本文是针对单元测试的外延。  本文主要介绍以下几个方面的内容:  1、何为单元测试  2、何为gtest  3、怎么使用gtest  4、怎么运行测试一单元测试是什么?  单元测试(UnitTesting),一般指对软件中的最小可测试单元进行检查和验证。最小可测试单元可以是指一

CMAKE:更换接口目标的编译标志

我需要更换/std:c++14旗INTERFACE目标(仅标题库)/std:c++17。Cmake不支持设置C++直接在VS中的17标志(请参阅如何在VS2017中使用CMAKE启用/std:C++17)所以我需要手动替换它。然而get_target_property(my_compile_flagsmylibCOMPILE_OPTIONS)要检索当前设置标志的列表,然后随后用/std替换/std:C++14:C++17不起作用:Interface_library目标可能只有白色属性。不允许属性“compile_options”。您可以通过target_compile_features(...