Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Cmake_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Cmake 如何在C++;图书馆

我正在为OpenGL构建一个非常轻量级的库/包装器,我遇到了一个小问题。假设我有一个目录结构,看起来有点像这样: GraphicsProject |GraphicsApp ||main.cpp |GraphicsLib ||include |||fileA.h |||fileB.h ||library |||fileA.cpp |||fileB.cpp ||shaders |||shader1.txt |||shader2.txt || build ||| bunch of build stuf

.cmake文件中无法识别的变量

我举下面的例子来说明我的问题: CMakeLists.txt .... option(MY_TEST_VARIABLE "test" OFF) include(my.cmake) ... 我的夫人 if(MY_TEST_VARIABLE) message("MY_TEST_VARIABLE is ON") else() message("MY_TEST_VARIABLE is OFF") end() 如您所见,CMakeLists.txt将调用my.cmake,并且两个文件共享相同的

cmake-获取已使用的命令行标志“-D";

我最近把几个项目从autotools转到了cmake 我喜欢autotools的一个常见功能是——如果我进入src build目录。这里有config.log/config.status,在顶部列出了/configure--params命令,因此很容易重新运行以前使用的命令行标志 (就像在编译了一些东西之后——我想添加另一个——启用这个——所以从config.log/status复制并粘贴——然后重新运行/configure--old参数——启用这个) 在cmake中-我有一堆-D标志-如何在c

CMake将子目录库构建为静态库

采用以下项目结构 CMakeLists.txt libs\CMakeLists.txt 我有以下用例: CMakeLists.txt描述了MyLib库的构建过程。这个 libs\CMakeLists.txt描述MyLib使用的库的构建过程。它由带有add_子目录()的主项目使用 我可以控制MyLib是共享库还是静态库,包括: cmake -DBUILD_SHARED=TRUE|FALSE MyLib使用的所有lib都应该静态链接(MyLib应该是一个“独立”库)。但我不想在libs\CMak

Cmake 导入的目标库和接口库之间有什么区别?

据我所知,图书馆是这样的,非常有用。我们可以使用它来链接静态libs和传播属性 但是目标困扰着我:我看不到一个问题可以只用导入的目标来解决。当你创建导入的目标时,你告诉CMake:我已经在磁盘上的这个位置构建了这个{静态库|共享库|模块库|可执行文件}。我希望能够像对待由我自己的构建系统构建的目标一样对待它,因此请注意,当我说ImportedTargetName时,它应该引用磁盘上的二进制文件(如果适用的话,还有相关的导入库,依此类推) 当你创建一个接口库时,你告诉CMake:我有一组客户端可以

CMake quote escape conumdrum

我似乎无法理解克马克的逃跑规则。鉴于: set(X A B C) add_custom_target( works COMMAND DUMMY=0 X="${X}" env | grep ^X= COMMENT "This works") add_custom_target( fails COMMAND X="${X}" env | grep ^X= COMMENT "This fails") 目的是执行命令X=“A B C”env。自定义目标工作正确构造命令,其中as失败错误执行: X=\"

Cmake 如何有条件地添加所有选项以添加_custom_target()?

如果用户在cmakegui中选择${DO\uhtml}开关,我希望有条件地将目标docs\uhtml包含到ALL。如何避免这种丑陋的代码重复 cmake_minimum_required(VERSION 3.3 FATAL_ERROR) project(docs) set(DO_HTML 1 CACHE BOOL "Whether generate documentation in static HTML") if (${DO_HTML}) #This command doesn't wor

使用CMakelists导入我自己的共享库

我通过添加以下内容在CMakeLists.txt中创建了一个共享库: add_library(mylib SHARED ${SourceDir}) install (TARGETS mylib DESTINATION lib) 现在我可以在安装后在正确的文件夹中看到文件libmylib.so,但我不确定如何将其导入另一个单独项目的CMakeLists.txtCMake不仅允许您安装库,它还可以安装其他项目用于导入库目标的所有详细信息的文件。这使得导入的目标的处理方式与导入目标的处理方式几乎相同

Cmake CheckIncludeFilexx找不到标题

我正在尝试使用检查includefilexx模块验证系统中是否存在。存在于/usr/local/include/gsl/gsl处,但在处生成失败“未找到gsl” 好的,我详细研究了checkIncludeFilexx,您基本上必须使用CMAKE\u REQUIRED\u INCLUDES指定一些内容,否则它不知道在哪里搜索。为了给它一些东西,它会使用find_path悄悄地搜索include,但如果没有找到任何内容,它仍然会出错 project(gsl_t) cmake_minimum_requ

如何设置cmake库项目,并将导出用于其他cmake项目

我很难理解CMakes安装/导出命令的正确用法。我希望有一个CMakeLists.txt为静态库生成一个(解决方案),通过使用find_package命令(不同的、独立的)CMake项目可以使用该库 我有一个包含四个文件的根文件夹: /你好,cpp /你好,二等兵 /大家好,h /CMakeLists.txt 其中CMakeLists.txt为: cmake_minimum_required (VERSION 3.9) project (hellolib) add_library(hell

CMake内部目标类型

TYPE属性的CMake表示以下内容(我的重点): 目标的类型 此只读属性可用于测试给定目标的类型。它将是静态库、模块库、共享库、可执行库或内部目标类型之一 什么是“内部目标”及其类型? 我似乎找不到有关此的任何信息。我试图在自定义目标上查询此属性,结果是“实用程序”。因此,我认为自定义目标具有“一种内部目标类型”。我将“一种内部目标类型”解释为“其他目标的类型是特定于实现的。它们可以在较新的CMake版本中进行无声更改,因此任何人都不应假定任何特定的值。”@Tsyvarev我认为你是对的。但是

防止cmake使用某些CPU功能

我在一台机器上构建fastText库,但在另一台使用不同CPU的机器上运行它。我是这样建造的: mkdir build && cd build && cmake .. && make && make install 当我在另一台机器上运行它时,会出现“非法指令”错误。通过比较/proc/cpuinfo的输出,我发现后一台机器不支持以下CPU标志: ss nonstop_tsc aperfmperf 3dnowprefetch rs

如何保存CMake生成的文件?

我正在使用add\u custom\u命令()生成一些文件忍者清洁按其应有的方式移除它们。其中一个文件旨在作为默认/示例实现,由用户修改。它仅在不存在时生成。我想让忍者清理不删除此文件 我尝试了很多事情,但都没有成功: add_custom_target():CMake会抱怨缺少的文件,除非我将其命名为副产品,但这样做也会导致在清理时删除 设置文件属性(…生成FALSE)不起作用,因为CMake抱怨文件丢失 set\u directory\u properties()以类似方式失败:“文件夹不

针对CMake中没有完整路径的静态系统库进行链接

在为公共系统库构建CMake find模块时,libatomic,我注意到,如果使用静态库(即libatomic.a)的名称创建一个STATIC IMPORTED目标,然后将其添加到非导入目标(例如foo)的链接库中这种行为并不像预期的那样。例如: add_library(Atomic::atomic STATIC IMPORTED) set_target_properties(Atomic::atomic PROPERTIES IMPORTED_LOCATION "li

如何指定CMake在linux中生成.lib或.a文件

我的项目生成一个.lib文件,但我想生成一个.a文件。我不知道如何修理它。 我搜索“CMAKE_GNUtoMS”(将GNU导入库(.dll.a)转换为MS格式(.lib)),但项目从不使用它。“我的项目生成一个.lib文件,但我想生成一个.a文件。”-配置项目时,需要指定适合目标平台的文件。生成器决定哪个扩展(和格式)将包含由项目生成的库。

CMAKE中的qmake(.pro file)CONFIG-=控制台的等效项是什么

我已经构建并运行了QML应用程序。但是除了GUI运行控制台之外。我知道如何在qmake(.pro文件)CONFIG-=控制台中关闭控制台。但我不明白它在CMake中是如何工作的?我试过了,但没用 CMakeLists.txt cmake_minimum_required(VERSION 3.14) project(APSMDClient LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOUIC ON) set(CM

使用CMake检测端点

我的库需要读取大端整数(4字节),并将其转换为主机的端顺序进行处理。在*nixntohl运行时,在Windows下使用ntohl需要使用Ws2_32.dll(Winsock) 我宁愿消除这种依赖。实现这一点的最简单方法似乎是编写自己的endian交换函数(考虑到性能不是真正的问题,这是一个简单的练习)。但是,这需要一种方法来确定我的库正在编译的系统的端号(这样我就可以#ifdef在big-endian系统上执行交换函数) 由于endianness似乎没有标准的预处理器定义,因此似乎有必要使用我的

用于调试don'的Cmake标志;在valgrind中似乎没有什么用处?

好的,我有一个Qt应用程序,我正在尝试调试; 在运行valgrind并将输出重定向到文件时,我看到许多“肯定丢失”的块,看起来像这样,这让我很难过: ==24357== 24 bytes in 1 blocks are definitely lost in loss record 150 of 508 ==24357== at 0x4C2C56F: malloc (vg_replace_malloc.c:267) ==24357== by 0x76ED3CA: FcPatternCr

使用Cmake和Visual Studio Express 2010在命令行中构建hello world

我是新来的。我正在尝试使用VisualStudio2010Express构建一个非常简单的程序(HelloWorld)。在Visual Studio 2010命令提示符中,我运行了以下命令: cmake -g "NMake Makefiles" . 这似乎奏效了 C:\Users\david\dev\cmake\hello_world>cmake -g "NMake Makefiles" . -- Building for: Visual Studio 10 -- Check for w

在QTCreator CMake项目的项目窗格中包括GLSL文件

我正在这里学习OpenGL教程,并希望使用QTCreator和CMake构建示例 打开rootCMakeLists.txt文件将打开项目,然后项目将正确构建/运行(按照网站上的说明操作),但片段和顶点文件不会显示在项目窗格中。我尝试将它们重命名为.frag、.vert和.glsl,但没有效果。如果我从文件夹中拖动这些文件,它们将以正确的语法突出显示在编辑窗格中打开 如何使这些文件显示在“项目”窗格中 我在Ubuntu20.04上,尝试了sourceforge上的软件包和最新源代码中的QTCre

CMAKE add_自定义_命令:如何使用我的原始命令

我正在尝试使用add_custom_命令向我的vc2010项目添加一些自定义构建命令。但是: [1]我发现CMAKE会自动插入比我预期的多得多的代码 例如,我希望命令完全是: "c:\Some Folder\MyTool.exe" -arg0 -arg1 CMakeLists.txt中对应的代码如下: add_custom_command( OUTPUT ${outfile} COMMAND "c:\Some Folder\MyTool.exe" ARGS

让CMake提供有关未引用符号的错误/警告

我想知道当链接器找不到源文件中引用的符号时,如何让CMake产生一个错误,或者至少是一个警告 例如,假设我有foo.c: #include "bar.h" //bar.h provides bar() void foo(void) { bar() return; } 在我正在构建一个静态库的情况下,如果我不知道如何使用add_library()指令,默认行为似乎是甚至不发出警告,说明bar是foo的对象归档文件(.a)中未引用的符号。现在GCC链接器有了-z,但是是的,这不是CMak

如何使用CMake将文件中的字符串替换为当前目录的值

我正试图让另一个人的研究代码可以复制,这样其他人就不会有和我现在一样的麻烦。但是,我缺乏与cmake合作的经验。以下是我在阅读文档后可以做的: 在与我的CMakeLists.txt相同的文件夹中,我有一个名为io\u utils.h的文件,其中包含一个ROOT\u PATH变量,其值为value\u ROOT\u PATH。 我想用文件当前目录的值替换该字符串。因此,我尝试将以下内容添加到CMakeLists.txt: # Set ROOT_PATH in io_utils.h FIND_PAT

用于GNU无线电教程的cmake

我试着按照gnuradio网站上关于构建信号处理模块的教程进行操作: 然而,当涉及到需要我使用CMake的步骤时,终端抱怨 package cppunit is not found checking for module 'cppunit' -- package 'cppunit' not found -- Could NOT find CPPUNIT (missing: CPPUNIT_INCLUDE_DIRS) CMake Error at CMakeLists.txt:101 (

如何将CMake自定义命令的输出重定向到文件?

我需要使用add\u custom\u命令执行一个命令a捕获其标准输出。shell重定向到文件不起作用,并且添加自定义\u命令没有任何相关选项。我该怎么做?(请注意,由于Florian的评论,我在调查该问题后更改了答案。有关编辑的更多信息,请参见下文) execute\u进程的文档清楚地表明它不使用中间shell,因此重定向操作符在那里不起作用 但对于add\u custom\u命令,情况并非如此。重定向应该像预期的那样在那里工作。[编辑]有时它似乎不起作用的原因是CMake生成器、逐字说明符以

Cmake 请求的模块不可用:vtcrendering

我一直在尝试构建VTK并运行教程中的第一个示例, 圆锥体,但当我 cmake . 我得到了以下错误: CMake Error at /usr/local/lib/cmake/vtk-6.3/vtkModuleAPI.cmake:120 (message): Requested modules not available: vtkRendering Call Stack (most recent call first): /usr/local/lib/cmake/vtk-6.3/VTKConf

CMake目标版本增量

是否可以在每次重建目标时自动增加CPACK\u PACKAGE\u VERSION\u补丁(而不是更改CMake)? 谢谢你这并不是一个好办法。这里有一个小的演示: 。。。但在我看来,这不值得一提。您提供的部分代码是在CMake时间运行的(可能来自CMakeLists.txt)。您不可能在Cmake时间内处理递增的值,但您可以做的是在构建时运行一些Cmake脚本,并以不同的方式(例如通过标头)将递增的值传递给源代码 要在编译之前运行cmake脚本(进入CMakeLists.txt): 您需要将

为什么在使用cmake复制dll文件时打开它?

我有一个cmake,我正在将dll从一个位置复制到另一个位置,如下所示: set(dllpath "C:/images/own/standard/abc.dll") STRING(REGEX REPLACE "/" "\\\\" copyDll \"${dllpath }\") STRING(REGEX REPLACE "/" "\\\\" copyDest \"${CMAKE_BINARY_DIR}/_runtime/bin_${CMAKE_BUILD_TYPE}\") add_custom_

cmake中的QT5语言学家宏

尽管我对cmake非常陌生,但我成功地创建了一个新项目,包括Qt5LinguistTools和一个包含我的翻译的.ts文件。 我在我的cmake文件中添加了一个部分,以使用定义的宏QT5\u CREATE\u TRANSLATION调用文件上的lupdate和lrelease 它实际上使用我的ts文件和其他给定选项调用lupdate,但始终还包括附加参数 @<my_project_build_dir>/<tsfilename>_lst_file @/\u lst\u文件

使用调试符号和cmake编译项目的正确方法

当我想要获得调试或发布项目版本时,建议将CMAKE_BUILD_TYPE作为参数传递给CMAKE。我试图用cmake编译,我想用调试符号编译它。我搜索了中包含的CMakeLists.txt以查找以下字符串: CMAKE_BUILD_TYPE CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG 但我什么也没找到。我的问题是,当的CMakeLists.txt没有提到它时,指定CMAKE_BUILD_类型是否有意义?如果没有,如何使用调试符号进行编译 PS:我注意到,

Cmake gtest运行错误:目标的配方';测试';失败

我正在使用gtest,当一个测试用例在类型之后失败时发生了一些错误 $make test: Running tests... Test project /home/wangfrank/GitRootPath/qwer/http_server_client_practice/bin Start 1: case-2_nettools_test 1/3 Test #1: case-2_nettools_test .............***Failed 0.00 sec [=====

使用gfortran和mpifort为Fortran项目编写CMake文件

我有一个项目,其中一些f90文件需要使用常规gfortran编译器编译,一些需要使用mpifort包装器编译。我不知道如何正确地编写CMake文件来适应这种情况。此外,我以前从未使用过CMake,也不熟悉它,但我正试图从文档和(基本上过时的)教程中理解它 我的项目目录如下所示: ├── CMakeLists.txt ├── README.md ├── bin ├── build ├── compile ├── src │   ├── CMakeCache.txt │   ├── CMakeFil

CMake:如何只安装通过find_library找到的共享库?

我有几个第三方LIB,一些是共享的,一些是静态的,我需要安装共享的 目前,我正在查找库,列出所有需要的库,并将其传递给安装(文件…) 但是通过这种方式,.a和都可以安装libs 使用安装(目标…时,运行时,存档等会分离。 但我不想为每个LIB创建一个虚拟目标 我也不想将LIB分为共享和静态(已经有了另一种分离) 对于我来说,是否有一种更好的方法来过滤共享lib,而不仅仅是将文件名正则化?在find\u library之后,可能库被视为“更多”的文件路径,因此我可以从它们那里获得库类型?让我们看看

如何在CMake构建中每次运行python脚本?

目前,我需要在CMake中每次运行一个Python脚本,该脚本生成一个.qrc文件。我不能使用Qt设计器,我必须使用CMake。 set(CMAKE_AUTORCC ON)正在使用中,每当添加资源或更改名称时都会失败,这就是python脚本的原因。脚本本身已经生成了输出,之后一切正常,所以我不需要CMake本身的输出。我目前尝试了以下方法: include(FindPythonInterp) set (py_cmd "QRC_Updater.py") execute_process(

获取由add_子目录添加的CMake项目版本

我有一个依赖于Google测试库的CMake项目。 我使用ExternalProject\u Add和Add\u子目录添加了Google测试,如这里所述(部分合并到现有的CMake项目中) 现在,在命令add_子目录之后,我想检查包含的项目gtest和gmock的版本,但是gtest_版本和gmock_版本变量未定义。是否可以通过add\u子目录获取添加的项目版本?变量具有局部范围。因此,由子项目定义的版本变量在主项目中不可见 假设子项目的CMakeLists.txt执行project()调用

Cmake 如何访问封闭函数';宏中的参数?

我想实现一个类似于cmake\u parse\u arguments(parse\u ARGV…)的宏,即访问封闭函数的参数的宏。不幸的是,${ARGN}、${ARGC}和${ARGVn}在宏中具有特殊意义,它们调用宏参数字符串替换。我想访问封闭函数作用域的ARGN和ARGC和ARGVn变量。解决方法是使用中间变量引用作为转义。只有最里面的替换是宏替换,因此将${${}ARGV0}宏替换为${${}ARGV0},然后第一个变量替换给出${ARGV0},第二个变量替换生成包含宏的最里面函数范围中第

Cmake 使用预装包从源代码构建grpc

我正在尝试将gRPC集成到现有项目中。它已经安装了包含所有gRPC依赖项的目录(ssl、c-ares、protobuf和zlib)。我想在构建gRPC时使用它们,并将gRPC安装到同一目录中。 我下载了gRPC archive(没有克隆位于gRPC/third_party/中的子模块),并尝试生成生成系统,以便将gRPC构建并安装到我的目标文件夹中(使用cmake) 我使用了以下命令: cmake -DCMAKE_INSTALL_PREFIX=$PREFIX -DgRPC_ZLIB_PROVID

Cmake 如何使用CPack生成WIX包?

我使用了cmake 3.12.0。存在一个创建一个控制台应用程序的cmake项目。我将包生成功能添加到cmake项目中: # ... above cmake code for one console application creation # below code that I add: # pack set (A_PACK_DESCRIPTION_SUMMARY "${PROJECT_NAME} - CMake Assistant Solution") set (A_INSTALL_PRE

Cmake 安装从所有子目录中排除的子目录

我有一个项目a,它使用项目B中定义的一些目标。因此,我添加了子目录(从所有目录中排除子目录)以包含子目录。现在,我使用组件创建安装目标,并且A中的一些安装组件也需要B中的目标。但是,由于EXCLUDE\u FROM\u ALL,A的cmake\u安装.cmake不包括B的安装。我应该如何实现这一点?您可以在cmake 3.13之后安装子目录CMakeLists.txt中定义的特定目标 在3.13之前,用户可以使用 add_subdirectory(path/to/sub_dir EXCLUDE_

无法将CMake配置为查找安装了自制版本的Bison

我正在运行macOS 10.14,安装了带有brew的bison版本3.2,但它拒绝链接: $ brew link bison --force Warning: Refusing to link macOS-provided software: bison If you need to have bison first in your PATH run: echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_

你能从另一个文件中包含一个通用的cmake最小值吗?

我对有makefile背景的cmake很陌生 我喜欢使用includecmake_utils/header.cmake这样的东西来包含cmake文件的常见片段,这样我就可以将它们包含在我的项目中,但只能在一个地方更改一次。其中,cmake_utils是git回购 这是很好的工作,但我写的每一个CMakeLists.txt都必须有一个cmake_最小值 这很好,但我可能希望有一天能改变这一点——比如说,当我的一个常用文件使用较新版本的cmake的功能时。在这种情况下,我不想到处更改所有的CMake

如何在CMake中传递组合编译器选项和目标编译选项?

我正在使用定制的clang/llvm来构建我的项目。定制基本上是添加优化过程。要在使用我正在使用的clang编译时将选项传递给我的过程,请执行以下操作: clang [..] -mllvm -MyOption [..] 现在,我需要以这种方式传递多个选项: clang [..] -mllvm -MyOption -mllvm -MyOption2=value [..] 这与CMake的target\u compile\u options()一起停止工作,CMake删除了第二个-mllvm,因

如何使用cpack/cmake生成具有特定文件组织的nuget包?

我用cpack和cmake生成了两个nuget包。我的问题是在我的包中组织文件。我想把一些文件放在特定的文件夹中 事实上,我的第一个包裹里有: /_rels /package toto.nuspec toto.dll 但是我想在/lib文件夹中有toto.dll: /_rels /package /lib/toto.dll toto.nuspec 我尝试使用: set(CPACK_PACKAGING_INSTALL_PREFIX "/lib") 但是我希望其他包有不同的文件组织 您有没有办

是否可以在cmake中获取目标文件名?

我试图使用add\u custom\u命令将几个目标复制到特定的构建目录中,如下所示: get_filename_component(buildDirRelFilePath "libDetector_dynamic.so" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") add_custom_command( TARGET Detector_dynamic PO

无法使用CMake将GLEW链接到项目

请有人推荐我,我如何通过cmake将我的项目链接到GLEW 例如,根据GLFW的文档,我为GLFW做得很好: ... set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) add_subdirectory(${C

使Cmakelist(ros)失效

在安装ros(melodic版本)之后,我一个接一个地遵循以下步骤 $ mkdir -p catkin_ws/src $ cd catkin_ws/src $ catkin_init_workspace $ cd .. $ catkin_make 然后错误就这样出现了 CMake Error at CMakeLists.txt:1: Parse error. Expected a command name, got unquoted argument with text "

Cmake Visual Studio 2017-如何设置安装目录

我需要在Windows上建立一个库。我使用cmake生成sln文件: cmake -G "Visual Studio 15 2017 Win64" CMakeLists.txt 然后我在VisualStudio中打开sln文件并构建解决方案。有INSTALL.vcxproj。看起来我应该运行它,因为该库的“include”目录没有分开。如何在Visual Studio中设置安装目录?设置项目时,需要通过安装目标将缓存变量设置为要安装到的目录 此外,您应该指定包含CMakeL

上一页 1 2 ...  5   6   7   8    9   10   11  ... 下一页 最后一页 共 119 页