草庐IT

language-cmake

全部标签

c++ - CMake 和 MsVS-NuGet

我目前正在开发一个桌面应用程序,使用C++RESTSDK(代号Casablanca)、Qt5和其他一些库。对于项目设置,我使用CMake。如何让CMake安装NuGet包?如果我重新运行CMake,我现在每次都必须手动安装它,这不是一个真正的选择。 最佳答案 编辑:此答案不适用于C++项目。编辑:从CMake3.15开始,CMake支持使用VS_PACKAGE_REFERENCES引用Nuget包。现在,这是一个更比下面之前提出的解决方法更清洁的解决方案。要将Nuget包引用添加到CMake目标,请使用由_下划线分隔的包名称和包版本

c++ - CMake 和 MsVS-NuGet

我目前正在开发一个桌面应用程序,使用C++RESTSDK(代号Casablanca)、Qt5和其他一些库。对于项目设置,我使用CMake。如何让CMake安装NuGet包?如果我重新运行CMake,我现在每次都必须手动安装它,这不是一个真正的选择。 最佳答案 编辑:此答案不适用于C++项目。编辑:从CMake3.15开始,CMake支持使用VS_PACKAGE_REFERENCES引用Nuget包。现在,这是一个更比下面之前提出的解决方法更清洁的解决方案。要将Nuget包引用添加到CMake目标,请使用由_下划线分隔的包名称和包版本

c++ - 如何使用 CMake 通过命令行定义 C++ 预处理器宏?

我尝试在CMake的命令行中设置预处理器宏。我试过了:setgenerator="VisualStudio82005"setparams=-DMY_MACRO=1cmake.exe-G%generator%%params%..\some_project但它既没有在我编译时定义,也无法在CMake生成的文件中找到名称MY_MACRO,除了CMakeCache.txt它存在于形式:MY_MACRO:UNINITIALIZED=1我该怎么做? 最佳答案 一个不错的选择是定义一个cmake选项:OPTION(DEFINE_MACRO"Opt

c++ - 如何使用 CMake 通过命令行定义 C++ 预处理器宏?

我尝试在CMake的命令行中设置预处理器宏。我试过了:setgenerator="VisualStudio82005"setparams=-DMY_MACRO=1cmake.exe-G%generator%%params%..\some_project但它既没有在我编译时定义,也无法在CMake生成的文件中找到名称MY_MACRO,除了CMakeCache.txt它存在于形式:MY_MACRO:UNINITIALIZED=1我该怎么做? 最佳答案 一个不错的选择是定义一个cmake选项:OPTION(DEFINE_MACRO"Opt

c++ - CMake:何时使用 add_definitions 而不是 set_target_properties(目标 PROPERTIES COMPILE_DEFINITIONS 定义)

在CMake文档中,我们可以阅读:add_definitionsAddsflagstothecompilercommandlineforsourcesinthecurrentdirectoryandbelow.COMPILE_DEFINITIONSpropertyondirectoriesCOMPILE_DEFINITIONS:Preprocessordefinitionsforcompilingadirectory'ssources.COMPILE_DEFINITIONSpropertyontargetsCOMPILE_DEFINITIONS:Preprocessordefiniti

c++ - CMake:何时使用 add_definitions 而不是 set_target_properties(目标 PROPERTIES COMPILE_DEFINITIONS 定义)

在CMake文档中,我们可以阅读:add_definitionsAddsflagstothecompilercommandlineforsourcesinthecurrentdirectoryandbelow.COMPILE_DEFINITIONSpropertyondirectoriesCOMPILE_DEFINITIONS:Preprocessordefinitionsforcompilingadirectory'ssources.COMPILE_DEFINITIONSpropertyontargetsCOMPILE_DEFINITIONS:Preprocessordefiniti

c++ - 使用 CMake 将资源(例如,着色器代码;图像)嵌入到可执行文件/库中

我正在用C++编写一个应用程序,它依赖于我项目中的各种资源。现在,我有从生成的可执行文件到源中硬编码的每个资源的相对路径,这允许我的程序打开文件并读取每个资源中的数据。这工作正常,但它要求我从相对于资源的特定路径启动可执行文件。因此,如果我尝试从其他任何地方启动我的可执行文件,它将无法打开文件并且无法继续。是否有一种可移植方法让CMake将我的资源嵌入到可执行文件(或库)中,以便我可以在运行时简单地在内存中访问它们,而不是打开路径脆弱的文件?我找到了relatedquestion,并且看起来嵌入资源可以通过一些ld魔法来完成。所以我的问题是如何使用CMake以可移植、跨平台的方式做到这

c++ - 使用 CMake 将资源(例如,着色器代码;图像)嵌入到可执行文件/库中

我正在用C++编写一个应用程序,它依赖于我项目中的各种资源。现在,我有从生成的可执行文件到源中硬编码的每个资源的相对路径,这允许我的程序打开文件并读取每个资源中的数据。这工作正常,但它要求我从相对于资源的特定路径启动可执行文件。因此,如果我尝试从其他任何地方启动我的可执行文件,它将无法打开文件并且无法继续。是否有一种可移植方法让CMake将我的资源嵌入到可执行文件(或库)中,以便我可以在运行时简单地在内存中访问它们,而不是打开路径脆弱的文件?我找到了relatedquestion,并且看起来嵌入资源可以通过一些ld魔法来完成。所以我的问题是如何使用CMake以可移植、跨平台的方式做到这

c++ - CMake - 删除单个翻译单元的编译标志

我想删除单个翻译单元的设置编译标志。有没有办法做到这一点?(例如,使用set_property?)注意:编译标志没有-fno-name否定(无论出于何种原因)。我试过了:get_property(FLAGSTARGETtargetPROPERTYCOMPILE_FLAGS)string(REPLACE"-fname"""FLAGS${FLAGS})set_property(TARGETtargetPROPERTYCOMPILE_FLAGS${FLAGS})没有任何运气。我要删除的属性是CMAKE_CXX_FLAGS的一部分,因此这不起作用。 最佳答案

c++ - CMake - 删除单个翻译单元的编译标志

我想删除单个翻译单元的设置编译标志。有没有办法做到这一点?(例如,使用set_property?)注意:编译标志没有-fno-name否定(无论出于何种原因)。我试过了:get_property(FLAGSTARGETtargetPROPERTYCOMPILE_FLAGS)string(REPLACE"-fname"""FLAGS${FLAGS})set_property(TARGETtargetPROPERTYCOMPILE_FLAGS${FLAGS})没有任何运气。我要删除的属性是CMAKE_CXX_FLAGS的一部分,因此这不起作用。 最佳答案