草庐IT

language-cmake

全部标签

c++ - CMake 生成的 DLL 和 Curiously Recurring 模板 (C++) 的不正确行为

我在Windows上遇到了CMake生成的DLL文件的令人困惑的问题。在我的库中,我使用CuriouslyRecurringTemplatePattern为某些类提供唯一的ID号://da/Attribute.h:#ifndefDA_ATTRIBUTE_H#defineDA_ATTRIBUTE_Hnamespaceda{typedefunsignedintAttributeId;classAttributeBase{public:virtualAttributeIdgetTypeId()const=0;protected:/**StaticIDcounter.Everyclasstha

c++ - 如何在 CMake 中指定链接类型?

在我的CMake脚本中,我需要为我的项目链接的不同库指定gcc的不同类型链接。众所周知,使用-Wl,-Bstatic和-Wl,-Bdynamic选项进行此类混合。但是是否可以在cmake脚本中以某种方式指定它? 最佳答案 我们使用几个宏来调整CMake在Linux/MacOSX上的首选搜索顺序,以在动态和静态链接库之间切换macro(prefer_static)if(NOTWIN32)list(REMOVE_ITEMCMAKE_FIND_LIBRARY_SUFFIXES".a")list(INSERTCMAKE_FIND_LIBRA

c++ - CMake 和 Dylib : symbol definitions

我在为dylib配置cmake时遇到了一些困难。这是我的测试:mylibfunc.cpp#includestaticintcount=0;extern"C"{intmylibfunc(){count++;returncount;}}基本测试.cpp#include#include#includetypedefint(*funcPtr)();intmain(){//Loadfirstlibraryvoid*handleA=dlopen("libmylib.dylib",RTLD_LAZY);funcPtrfunctionA=(int(*)())dlsym(handleA,"mylibfu

c++ - 在 CMake 中处理多个 FIND_PACKAGE 调用

我有一个关于CMake中的FIND_PACKAGE函数的快速问题。我有一个利用点云库(PCL)的项目。PCL依赖于Boost,我的项目也是如此。因此,在我的CMakeLists.txt顶部,我有以下内容:FIND_PACKAGE(BoostREQUIREDCOMPONENTSprogram_options)#PreserveprojectBoostrequiredlibrariesSET(Boost_PROJECT_LIBRARIES${Boost_LIBRARIES})FIND_PACKAGE(PCL1.6REQUIREDCOMPONENTScommonsearch)我的项目使用了B

c++ - 如何使用 cmake 组织大型构建

我正在从事一个更大的项目,我们正在考虑如何组织大型构建。我认为应该/可以用cmake完成,但目前我不知道如何满足我们的所有要求。我们的项目组织结构如下:该项目由多个子项目(称为构建模块)组成每个构建模块可以由多个部分组成,这些部分创建静态或动态库、可执行文件或测试构建模块可能依赖于其他构建模块的公共(public)接口(interface)为了加快构建时间,每个构建模块都应该构建在一个单独的CI服务器上。依赖项不应每次都构建,而应从某个二进制存储库中获取(我们在这里考虑的是nuget,但最简单的解决方案可能是网络共享)考虑到cmake,我正在考虑这样的目录结构-Rootdirector

c++ - CMake 与 gmock

我只是想确保我对CMakeLists.txt的理解是正确的。我的虚拟项目结构:|-+dummy|-+CMakeLists.txt|-+src|--CMakeLists.txt|--Converter.cpp|--Converter.hpp|--main.cpp|-+tests|--CMakeLists.txt|--Converter_ut.cpp|-+thirdparty|-+gmock-1.7.0我的目标是使用CMake创建构建过程。这是我的第一次尝试,所以我认为有一些错误。它有效,但我不确定我是否理解正确,如果你能分享一些意见/建议,我将不胜感激。虚拟/CMakeLists.txt

c++ - CMake 包含和源路径与 Windows 目录路径不同

我想用VisualStudio2010/VC10和CMake创建一个库。Windows的树与CMake的项目树不同。问题是CMake不会在VisualStudio中创建带有头文件和源文件的foolib。我无法更改库的树,因为它是一个古老的代码,有很多共享多个包含文件的库。root|-'includes|'-foo.h|-'src|'-libprojects||'-foolib|||'-bin|||'-project||||'-mak100||||'-CMakeLists01.txt|||'-src||||'-CMakeLists02.txt||||'-foo.cxxCMakeLists

CMake 添加子目录错误 : "When specifying an out-of-tree source a binary directory must be explicitly specified"

我的目录结构如下:rootlibACMakeLists.txtClassA.cpplibBCMakeLists.txtClassB.cppsharedCodeenums.hAbstractClass.hCMake文件中如何包含sharedCode目录?这样classA(在libA中)和classB(在libB中)都可以使用enums.h和AbstractClass.h?在我尝试使用的CMakeLists.txt中:add_subdirectory(../sharedCode)但它给出了错误add_subdirectorynotgivenabinarydirectorybutthegiv

c++ - CMake : softlink resource ( such as GLSL shaders ) or copy each complilation

使用CMake将资源从源目录复制到构建目录的最简单方法是file(COPY${CMAKE_CURRENT_SOURCE_DIR}/resourcesDESTINATION${CMAKE_CURRENT_BINARY_DIR})但是,这仅当我调用cmake时才会更新构建目录中的资源。我需要每次调用make来更新资源。例如现在我开发了一些GLSL着色器。我需要同时更改C++代码和GLSL代码,并且我需要在我的IDE中每次点击compile或run时一切都同步(我将CodeBlocks与CMake生成的项目文件一起使用)简单的解决方案是使从源目录到构建目录的软链接(softlink)。但我不

c++ - Makefile 到 CMake 的转换

我正在尝试将Makefile项目转换为cmake。我的项目有一个可执行文件,它被构建并链接到内部共享库和外部共享库(可执行文件中对两者都有依赖性)。这是我的旧Makefile(通用化):Include=-I$(PROJ_DIRECTORY)/include-I/${EXTERN}/lnIncludeLibrary=-L$(PROJ_DIRECTORY)/build-lshared-L$(EXTERN_LIBBIN)-lexternCPPFLAGS=-D_GLIBCXX_DEBUG-DProjectRescource=$(PROJ_DIRECTORY)/resources-O0-g3-W