草庐IT

language-cmake

全部标签

c++ - CMake:包含目录的排序(如何混合基于系统和用户的包含路径?)

我有一个CMake项目,其中包含并链接到两个库,比如A和B(实际上它不止两个,其中一个是boost东西,但这在这里并不重要)。两者都通过FindSomething.cmake脚本定位,这些脚本(正确地)填充标准CMake变量,以便通过添加目录INCLUDE_DIRECTORIES(${A_INCLUDE_DIRS})INCLUDE_DIRECTORIES(${B_INCLUDE_DIRS})然后链接通过完成TARGET_LINK_LIBRARIES(mytarget${A_LIBRARIES}${B_LIBRARIES})现在,问题是这两个库都可以驻留在基于用户的位置或系统目录中(顺便

c++ - 如何在 CMake 中构建具有 2 个不同变量值的程序

我最近将我的Qt项目从qmake移植到了CMake。我的主程序包含一个值,该值取决于#define指令。我想通过CMake在外部指定define指令,并构建同一可执行文件的3个不同名称的版本。我应该怎么做?我看过set_target_properties但这只适用于库而不适用于可执行文件。例如我想要下面的程序,intmain(){cout它基于BUILDTYPE"define"编译成3种不同的风格(3种可执行文件)例如在我的CMakeLists.txt我想指定add_executable(myAppV1-DBUILDTYPE=1)add_executable(myAppV2-DBUIL

c++ - cmake 和 GenerateExportHeader

我正在尝试使用cmake中的GenerateExportHeader模块。我的CmakeLists.txt的一部分:add_compiler_export_flags()add_library(guiSHARED${gui_CPP}${gui_HPP})generate_export_header(gui)它对gui项目本身很有效,但是当我尝试在另一个项目中包含gui的.h文件时,找不到#include"gui_export.h"。这是显而易见的,因为gui_export.h是在gui的构建目录中创建的,它不在其他项目的包含路径中。简单的解决方案是将gui的构建目录添加到其他项目的包含

c++ - Cmake 找不到 Boost 库

我是C++中Cmake和boost库的新手。我正在做一个需要boost和Cmake的项目。我使用的是Cmake2.8.11版、MSVisualStudio2013和Boost1.54.0。当我尝试从Cmake进行配置时,出现以下错误:CMakeErroratC:/ProgramFiles/CMake2.8/share/cmake-2.8/Modules/FindBoost.cmake:1106(message):UnabletofindtherequestedBoostlibraries.Boostversion:1.54.0Boostincludepath:D:/boost_1_54

c++ - 指定 cmake 如何创建 visual studio 项目

我正在为我的项目设置cmake,并且我已经为它设置了一个测试项目。当它生成我的visualstudio2010项目时,我想将其作为我之前的项目。它创建了一个我不想要的ALL_BUILD和ZERO_CHECK项目。它将.h文件放入ExternalDependencies文件夹。我想要一个包含所有.h文件的IncludeFiles文件夹。我还想在不同的过滤器下对一些文件进行分组。就像在我的核心库中一样,我想将所有与数学相关的文件分组到一个文件夹中,并将所有与事件管理相关的文件分组到另一个文件夹中。在文件系统上,它将项目文件放在/Lib/src中。可能是因为我已将其组织在代码文件夹中,但我不

c++ - 如何将 CMake 包含和库添加到 Visual Studio 解决方案?

我使用CMake生成VisualStudio2010项目和解决方案文件。其实我可以设置不同的设置,如警告级别、增量构建标志等。来自CMake。但是我不能设置额外的包含和库,列在VC++目录配置选项卡中。实际上我必须手动设置这些目录。这是愚蠢的无聊...我尝试设置以下CMake变量:CMAKE_INCLUDE_PATH、INCLUDE_DIRECTORY但什么也没发生。如果我打开项目,解决方案的附加包含目录始终为空(仅给出标准MSVE设置)。我也厌倦了在可执行文件创建后设置这个变量,但这也没有效果。这就是我直接在cmake的标题中所做的文件:CMAKE_MINIMUM_REQUIRED(

c++ - "core language"是什么意思?

在thispage上的表中从GCC文档中,其中一项(大约在表的中间位置)仅列为“核心语言”。这意味着什么?语言的哪些部分不会被包括在内? 最佳答案 标准库是语言的一部分。为了表达仅涉及语法规则、语义规则等而不涉及库的语言子集,人们使用术语核心语言。例如,在C++委员会中有一个名为“核心工作组”(CWG)和“库工作组”(LWG)的工作组。 关于c++-"corelanguage"是什么意思?,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 如何使用 CMake 组织我的文件?

关于在解决方案中组织我的代码,我在使用CMake时遇到了一些问题。我习惯于通过为每个命名空间创建一个目录来组织我的命名空间。例如,如果我创建这样的东西:namespacetest{namespaceblabla{...}}我会创建一个目录test并在其中创建一个目录blabla,但是CMake不会让它们出现在我的VisualStudio或Xcode项目中。有什么技巧可以做到吗? 最佳答案 尝试使用source_group命令。在调用add_executable后,添加source_group语句以根据需要构建项目,例如:source

c++ - 在 CMake 中设置路径(C++、ImageMagick)

我正在尝试向使用CMake开发的更大的C++项目添加一些内容。在我要添加的部分中,我想使用Magick++。如果我只是编译我的小示例程序#includeintmain(){Magick::Imageimage;return0;}与g++-oexampleexample.cxx它失败了,因为它没有找到“Magick++.h”。如果我正在使用g++-I/usr/include/ImageMagick-oexampleexample.cxx我收到“undefinedreference”错误。如果我按照http://www.imagemagick.org/script/magick++.php

c++ - CMAKE:在函数内创建和构建列表——具有目录或全局范围

我并不完全熟悉cmake的范围规则。我需要在为IDL进行RPC代码生成时建立各种文件的列表。function(generate_rpcfile_name)set(PROTO_FILES${PROTO_FILES}${file_name})endfunction(generate_rpc)generate_rpc(BasicProtocol.proto)generate_rpc(dummy.proto)message(STATUS"PROTOFILES:${PROTO_FILES}")列表每次都是空的。我需要可以在函数内构建的可追加列表。 最佳答案