草庐IT

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++ - 库标题和#define

我不确定该搜索什么。如果这很简单,请原谅。但让我概述一下场景,看看那里有什么答案。假设我有一个定义如下结构的库:structExample{inta;#ifB_ENABLEDintb;#endif};此header作为整个库安装的一部分安装。我的问题是,如果我的库定义了B_ENABLED,它将具有包含这两个变量的结构。但是如果我的应用程序也没有定义它。然后它会将header解释为定义一个只有一个成员的结构。处理这个问题的最好方法是生成某种“选项”header,其中包含库构建中指定的所有#defines吗?我的库使用CMAKE构建。因此,针对此问题的CMAKE解决方案是extracred

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

具有预先编译依赖项能力的 C++ 构建系统

我正在为C++游戏项目设置构建环境。我们的主要要求是不仅能够构建我们的游戏代码,还能够构建其依赖项(Ogre3D、Cegui、boost等)。此外,我们希望能够在Linux和Windows上构建,因为我们的开发团队由使用不同操作系统的成员组成。Ogre3D使用CMake作为它的构建工具。这就是为什么到目前为止我们的项目也基于CMake。一旦在每个团队成员系统上手动设置了所有依赖项,我们就可以完美地编译,因为CMake能够找到这些库。问题是是否有一种可行的方法来自动设置依赖关系。作为一名Java开发人员,我知道Maven,但C++世界中存在哪些工具?更新:感谢您提供很好的答案和链接。在接

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

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