CMake到外部库的链接

如何让CMake将可执行文件链接到不在同一CMake项目中生成的外部共享库 只需执行target\u link\u库(GLBall${CMAKE\u BINARY\u DIR}/res/mylib.so)就会产生错误 make[2]: *** No rule to make target `res/mylib.so', needed by `GLBall'. Stop. make[1]: *** [CMakeFiles/GLBall.dir/all] Error 2 make: *** [al

CMake:构建跨平台分发

在我的MacOSX上,我开发了一个利用Qt和VTK库的应用程序。我使用CMake生成makefile 现在我想在Windows上编译一个最终用户自包含的包,它应该可以在最终用户机器上工作,而不需要预先安装Qt或VTK库。我认为可以通过修改CMakeLists.txt文件来做到这一点,但网络搜索并没有为我指明正确的方向 如何使用CMake为Windows制作一个可分发的软件包?我在自己的一个项目中所做的是编写一个小脚本,它将为我提供VTK的CMake变量和QT_变量库中的.so文件或.dll文件

CMake链接已安装共享库

我是CMake的新手,一直在尝试构建我的项目,以便构建一个共享库(游戏引擎),然后可以链接到一个或多个可执行文件(游戏)。我的目录结构如下: - build - engine - - include - - source - game - - include - - source - resources - scripts 我已使用以下命令安装了共享库: install(TARGETS Engine EXPORT Engine RUNTIME DESTINATION bin LIB

使用cmake在windows中查找\u包的默认搜索路径是什么?

我正在将一些代码移植到windows,我的cmake使用 find_package(Libavahi) 我有头文件、dll等,但我不确定将它们放在哪里,以便cmake可以找到它们 cmake在哪里可以找到这些文件?它们在一个名为usr的文件夹中 我发现模块路径是通过以下方式指定的: set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") 但是我想知道是否有一个默认位置也将被搜索该命令完全

Cmake 如何交叉编译ctest?

我想在arm目标系统上使用ctest。 因此,尝试对cmake(包括ctest)进行交叉编译,但失败了。 我使用cross ng构建了arm交叉编译器,如下url所示: 我的测试臂机器是树莓皮。因此,上面的指南帮助我获得了arm交叉编译器 有了这个arm交叉编译器,我成功地构建并测试了helloworld 但是,使用这个arm交叉编译器,我无法编译cmake-2.8.12.2,如下所示 mkdir-p/somepath/bin/cmake cd/somepath/bin/cmake cmake

CMake:添加可编译的文件类型

我正在为嵌入式系统编译代码。这个系统对于任何好奇的人来说都是视差推进器,但是你不需要熟悉它来回答我的问题 GCC的自定义版本(propgcc)有一种新的输入和输出文件类型:可以将.cogc文件编译成.cog文件 我找到了CMake的add_custom_命令(对于没有看到它的任何人,您可能会对文档感兴趣),但我还没有弄清楚如何正确使用它。我看到的所有示例都使用精确的文件名作为输入和输出,而不是通配符或类似的名称。我不想编译一个特定的文件foo.cogc。。。我希望允许工具链文件的用户编译任何.c

什么是';模块';在cmake';组件检查模块&x27;代表

我正在用GNU无线电建造一个模块。(让我们称之为我的模块。) GNU无线电使用cmake构建并安装my模块 在项目中,我需要使用其他人制作的模块。这可以是it++和其他gnuradio模块。我将使用gnuradio模块。(我们称之为其他模块) 要在gr模块中使用其他模块,我需要使用find_-package、pkg_-check_-modules和find_-library告知“我将使用预构建模块” 而pkg\u check\u模块(PC\u ITPP ITPP)可以成功检测到它++。 但是我很

如何使CMakeList.txt属于某个目标或文件夹?

我举下面的例子来说明我的问题。这些项目的结构如下: CMakeLists.txt Dir1 Dir2 Dir3 在CMakeLists.txt中,我有以下定义: macro(obtain_sublist result _curdir) set(curdir ${${_curdir}}) FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) SET(dirlist "") FOREACH(child ${children})

如何在CMakeList中构建相互依赖的库

在项目的根目录中,有两个库文件夹,一个是lib1,另一个是lib2 在lib1文件夹中,有如下文件: lib1Config.cmake.in + lib1ConfigVersion.cmake.in + CMakeList.txt lib2Config.cmake.in + lib2ConfigVersion.cmake.in + CMakeList.txt 在lib2文件夹中,有如下文件: lib1Config.cmake.in + lib1ConfigVersion.cmake.in +

Cmake 科马克公司;Qt创建者';的项目树:。缺少ui文件

我正在使用Qt Creator的cmake项目。除了Qt Creator在项目树中不显示任何.ui文件外,其他一切都可以正常工作和构建。如果我想在设计器中编辑.ui文件,我必须切换到文件系统视图并手动找到它 有没有办法告诉Qt Creator/cmake也将.ui文件添加到项目树(或.cbp文件)中?Qt Creator仅显示用作某些目标源的文件。您可以将.ui文件添加到某些目标以在IDE中查看它们,例如: add_executable(some_target <sources> f

在LLVM中为特定目标修改CMakeLists.txt,但没有更改

我正在从事一个使用LLVM的项目(我们称之为Escala)。我们把它作为出发点。我在CMakeLists.txt中添加了一个额外的命令,但由于某些原因,当我运行cmake时,什么也没有发生。我修改的文件位于lib/Target/Escala/CMakeLists.txt(此目录在llvm-or1k中不存在)。您可以考虑修改lib/Target/or1k/CMakeLists 以下是代码在修改前的外观: set(LLVM_TARGET_DEFINITIONS Escala.td) tablege

cpack--config CPackSourceConfig.cmake实际上在做什么?

在CMake教程的第6步中,它说“要创建源代码发行版,您需要键入”cpack--config CPackSourceConfig.CMake。我尝试了这个命令,得到了四个tarball:output.tar.bz,output.tar.gz,output.tar.xz和output.tar.Z tarball只是当前目录的压缩。打包的Makefile包含我当前系统的绝对路径。这意味着如果我将它分发到其他系统,我需要再次运行cmake 那么,使用cpack有什么意义呢?使用cpack创建源代码包的

Cmake &引用;ctest";对;勾选“:坏的构建时间与坏的选项传递

要在CMake下注册测试,我们需要 enable_testing() 或 然后针对每个测试(名称fooTest,可执行foo) 对于每个测试,我们通过关键字EXCLUDE\u FROM\u ALL和命令add\u dependencies扩展上述内容: add_executable(foo EXCLUDE_FROM_ALL <foo_sources>) add_test(fooTest foo) add_dependencies(check foo) add_可执行文件(foo从

先决条件更改后,Cmake不会重建依赖项

我有下面的依赖关系图 a.txt <- prereq <- stamp <- dest 最初,我有以下文件 $ ls a.txt CMakeLists.txt 在第一次运行cmake和make之后,我们获得了预期的行为 $ cmake . $ make [ 0%] Built target prereq [100%] Generating stamp Update stamp. [100%] Built target dest 但是,在触摸了a.txt之后,我希望st

从CMake设置';制作';使用'-j';默认情况下的选项

每当我从终端调用make时,我希望我的CMake项目由make-jn生成。我不想每次都手动设置-j选项 为此,我将CMAKE_MAKE_程序变量设置为特定的命令行。我使用了ProcessorCount()函数,它给出了并行执行构建的进程数 当我做make时,我看不到任何加速。然而,如果我做了make-jn,那么它的构建速度肯定会更快 你能帮我解决这个问题吗?(我是在Linux上开发的。) 下面是我在CMakeList.txt中使用的代码片段: include(ProcessorCount) Pr

使用CMake时忽略外部模块中的警告

我正在将CMake GUI(无版本)与CMake3.6.1一起使用。我正在使用一个带有add_子目录的外部模块,它向我显示一些我不喜欢的警告(因为讨厌的污染): 我想在不接触外部文件的情况下隐藏这些警告-Wno dev如果只影响外部模块(g3log) 我尝试使用cmake_策略如下,但没有效果: cmake_policy(PUSH) cmake_policy(SET CMP0054 OLD) add_subdirectory(${g3log_DIR} ${CMAKE_BINARY_DIR}/..

如何使用cmake设置make选项

我想设置命令,如make debug,make test,等等。。。使用cmake执行此操作的最佳方法是什么,这样我可以运行cmake..一次(需要一段时间),然后可以使用make选择构建类型 我找不到这方面的任何资源。正如@Tsyvarev评论的那样,这需要(分别是CMake)做一些额外的工作,因为构建类型是在CMake的配置过程中选择的,并在构建环境生成步骤中最终确定的 以下是我所做的: 首先,运行(例如,在脚本中)CMake以获得您想要支持的所有配置,并为输出选择相应的子文件夹: >

IAR iccarm Cmake

我在为arm从IAR IDE迁移到Cmake/IAR编译器时遇到一些问题: 根据我的理解,使用正确的CMakeList.txt,我尝试: /c/CMake/bin/cmake.exe -G"MSYS Makefiles" -DCMAKE_TOOLCHAIN_FILE="C:\CMake\bin\Modules\Compiler\iar.cmake" -DCMAKE_C_COMPILER="C:/Program Files (x86)/IAR Systems/Embedded Workbench

在cpackconfig.cmake中添加-D选项

我想知道,当我们在没有CMake的情况下创建Cpack NSIS安装程序时,是否可以添加-D选项 例如: 在CMAKE:CMAKE-DPRODUCT=MyProduct--build… 在CPACK中:CPACK.exe'-DPRODUCT=MyProduct-C Release--config CPackConfig.cmake 谢谢您的帮助。cpack/? 显示您完全可以使用-D、-C和--config选项。对不起,我的问题不太准确。我知道我可以使用-D选项。但是文档表明-D定义了一个CPA

CMake文件错误

我一直在尝试在raspberry pi 3模型上完成并编译sdk代码,但没有成功地找出下面的错误 请让我知道,如果有人有这个错误之前,如果你有一些方法来解决它 编译CXX编译器标识源文件 “cmakcxcompilerid.cpp”失败。编译器: /home/pi/rpi_root/tools/arm-bcm2708/gcc linaro arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ 生成标志:Id标志: 产量为:2 /home

Cmake ExternalProject_add()完成下载后,如何使用add_subdirectory()?

我问的问题基本上和别人问的一样。然而,这个问题尚未得到回答 我想在我的项目中使用googletest。为此,我使用ExternalProject_Add()来克隆带有git的testsuite。之后,我喜欢使用add_subdirectory() 这也是中所描述的。这种方法的好处在于,googletest中的构建脚本自己处理构建过程 但是问题是,add_subdirectory()找不到源文件夹,因为它从一开始就不存在。因此,add\u subdirectory()应该取决于ExternalPr

Cmake 不能编译简单的记录器

大家好,我最近一直在尝试在Centos 7上安装simple recorder,但当我准备运行./simple build-并安装时,它开始运行,但出现了关于pulse audio的代码 请帮助别担心,我已经解决了它,我正在尝试安装简单的录像机,我现在通过rpm安装了它,但我是按照这里的说明进行的 由于链接图像中的错误,我无法安装它这与编程有什么关系?链接到实际问题的图像?好球!说真的,你的问题和所有相关信息都是以文本的形式出现的,而不是以链接的形式出现。

是否可以不在cmake中生成所有的构建项目?

我不需要所有的构建子项目,我可以避免生成它吗?Thanx.它对应于allmake目标,因此,不,您无法避免生成它。但是,您可以手动将其从解决方案中删除。: ALL\u BUILD目标对应于CMake的“ALL”目标概念,相当于使用makefile生成器生成ALL。这与“构建解决方案”行为不同,因为VS IDE处理vcxproj间依赖关系的方式存在特殊性 无法抑制所有生成目标。对于像cmake--build这样的命令,它必须存在。能够在默认情况下构建“所有”目标 因此,您无法避免它-就像@arro

没有CMake更改时重新生成配置文件

我有一个项目,里面有一个配置文件 configure_file(version.h.in version/version.h) 同一代码库用于一天内的多个构建,而不需要在构建之间进行清理。第一次运行生成时将生成version.h文件,但后续生成不会在version.h中重建(并更新修订号) 有没有办法强迫CMake总是重建version.h,而不考虑更改,或者更好的方法是基于subversion版本号中的更改(或缺少更改)?要完成此工作,您需要克服一些问题 运行cmake时,从subvers

Cmake 如何指定要将CPack打包到RPM中的文件?

我正在使用CPack的组件特性制作两个RPM。我希望其中一个包含.so文件,另一个包含所有头文件。我在组件功能中找不到任何关于打包文件的类似问题 (DEVEL“是我的DEVEL rpm的组件) 现在我已经设置了(CPACK\u RPM\u DEVEL\u INSTALL\u FILES path/。/file1 … path/。/file2) 我的所有文件都用返回分隔,但这根本不起作用。在rpm中提供所需文件列表的正确语句是什么 目前,它生成3个RPM(我假设第三个RPM将是一个完整的RPM,包

CMake找不到gtest或EasyLogging++;包装?

我有以下cmake文件: set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/find_modules) find_package(gtest REQUIRED) find_package(EasyLOGGINGPP REQUIRED) 我得到以下错误: -- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE GTEST_M

如何指定vcpkg使用的CMake版本

短版: vcpkg无法生成包含以下错误的包: Unable to determine appropriate CMake MSBuild generator for: Windows-x64-v142 This is because CMake 3.12.4 does not currently have a 'Visual Studio 16 2019' option. 即使安装了cmake 3.14。 我想告诉它使用cmake 3.14 长版本: 背景: 我正在试验Visual

是否从cmake中的路径中删除某些引导部分?

我在CW\u PROJECT\u ROOT\u DIR中设置了一个绝对路径。 例如,可以是/some/path/project 然后我想打印CMAKE\u CURRENT\u SOURCE\u DIR,但是 没有领先的CW\U项目\u根\u目录部分。 例如,如果CMAKE_CURRENT_SOURCE_DIR为 /foo/bar/some/path/project/xyz那么什么都不应该发生 被剥离,但如果是/some/path/project/foo/bar 然后只打印foo/bar 我如何才

分析字符串时,FindOpenSSL处的CMake代码中存在语法错误。CMake:422

我已经安装了OpenSSL,但我不知道为什么CMake不让我运行代码。这个问题是CMake 3.17.3版中引入的一个错误,请参阅提交。代码更改旨在更新CMake解析OpenSSL版本号的方式,但CMake维护人员使用的正则表达式格式不正确 该问题已在CMake 3.18.0-rc1中快速修复,因此如果升级到最新版本,该问题将得到解决 CMake Error at /usr/local/Cellar/cmake/3.17.3/share/cmake/Modules/FindOpenSSL.cma

我可以用CMake和vcpkg(很好地)管理QuantLib吗?

我想使用vcpkg来管理我的包。我还想使用CMake来管理我的构建。有没有可能在不使用硬编码链接的情况下包含quantlib库?类似于find_包(quantlib)的东西 编辑:我已经尝试过的事情(免责声明-我是新来的。感觉像是在黑暗中摸索。这一部分让我的无知有点太明显了) 首先,这是一个干净的构建,我没有向后的可比性约束。我的目标是创建一些可以在Linux和Windows环境之间使用的东西。我正在使用VSCode编辑我的代码和CMake。 我在这里的参考是Boost库。我成功地使用它的方式是

CMake汇编程序错误“;没有此类指示”;

我正在将一个已经存在的项目从使用arm gnu工具链的Atmel Studio 7.0迁移到使用MinGW generator的CMake。 我已按如下方式配置了CXX和C编译器标志: set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-D__SAMD21G18A__ -DARM_MATH_CM0 -DF_CPU=48000000L -DARDUINO=10808 -DARDUINO_SAMD_ZERO -DARDUINO_ARCH_SAMD -DUSB

Cmake 无所需的';libconfig++';建立

我已经在RHEL8容器中构建了libconfig依赖项,但cmake无法检测到它 CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:640 (message): None of the required 'libconfig++' found 我可以在以下位置找到对象文件: STEP 11: RUN ls /usr/local/lib/ cmake libconfig++.a libconfig++.la libconfig

如何仅构建CMake中实际依赖的库

我有一个库,它作为几个应用程序的外部引入,并使用add\u子目录包含。由于使用的灵活性,它有四种构建风格:GUI/CLI和shared/static。GUI应用程序倾向于构建GUI风格,因为它生成的用户警告显示为弹出对话框。但是,它也被一些命令行应用程序使用,这些应用程序使用在终端上生成用户警告的CLI版本。一些应用程序使用共享版本是因为它们使用使用相同库的其他库,并且需要共享资源,例如输出日志文件句柄。有些应用程序使用静态版本,因为它们是我们希望作为独立二进制文件分发的小型实用程序,不需要依赖

如何阻止CMake搜索完全从依赖项中删除的文件?

在我当前的CMake项目中,我曾经有一个名为game/test.dae的文件。它作为依赖项在add_custom_命令调用中使用 很久以前,我将此文件作为依赖项从我的CMakeLists.txt中删除,但由于某些原因,我的windows构建环境尚未收到备忘录(尽管它在macOS上工作): 每当我在这个特定的项目中删除旧的依赖项时,我总是会遇到这种情况,仅在windows上,而且似乎唯一的“修复”方法是删除我的构建目录并重新开始—这非常不方便,因为我使用的一些第三方库可能需要10分钟。建造 有没有

Cmake OpenPose安装失败:问题已解决

我一直在尝试将用于motoin tracking的openpose框架安装到我的Windows 10 PC上,它有一个AMD Ryzen Pro 1700八核CPU和一个Radeon RX 580 GPU,带有8GB的VRAM和16GB的普通RAM。我已经按照指令从源代码处编译,这样我就可以使用它的相关python API了,但是我被上面的问题打动了,因为上面的错误导致安装失败,不管我是将它设置为OPENCL还是CPU 完整的错误日志链接如下: :\openpose\build\CMakeFil

CMake到外部库的链接

如何让CMake将可执行文件链接到不在同一CMake项目中生成的外部共享库 只需执行target\u link\u库(GLBall${CMAKE\u BINARY\u DIR}/res/mylib.so)就会产生错误 make[2]: *** No rule to make target `res/mylib.so', needed by `GLBall'. Stop. make[1]: *** [CMakeFiles/GLBall.dir/all] Error 2 make: *** [al

让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

作为cmake构建的一部分运行python脚本

我是第一次使用cmake,只是没有运气找到一些例子来帮助我找出我做错了什么。该功能似乎非常基本,但迄今为止,我所尝试的任何东西都没有给我任何有意义的输出或错误 我有一个文档的预加载命令,只要已经创建了文档,这个命令就可以正常工作 set(variable_name PRELOAD ${_source_directory}/Documents/output.txt AS output.txt ) 但我希望文档生成(通过python脚本完成)也成为cmake构建过程的一部分。我要运行

cmake和jsonCPP静态库目标出错“;jsoncpp_lib_static“;

当我尝试在jsonCPP上使用cmake时,我得到了以下错误 CMake Error at lib_json/CMakeLists.txt:73 (INSTALL): install TARGETS given no ARCHIVE DESTINATION for static library target "jsoncpp_lib_static" 我使用自述文件中的命令: cmake -DCMAKE_BUILD_TYPE=debug -DJSONCPP_LIB_BUILD_STATIC=O

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

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

Cmake-freetype、sdl、sdl图像

我有以下cmake文件: cmake_minimum_required(VERSION 2.8) include(ExternalProject) project(freetype_test) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") set(LIBS_DIR ${PROJECT_SOURCE_DIR}/libs) set(FREETYPE_VER "2.5.3") set(SDL2_VER "2.0.3") #

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

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

如何设置cmake的包含订单

我正在使用cmake为一个项目生成Makefile。在顶部的CMakeLists.txt中,我需要包含一些子模块。所以它就像: include(cmake/Modules/pcre-8.40.cmake) include(cmake/Modules/curl-7.64.1.cmake) include(cmake/Modules/openssl-1.1.1.cmake) curl-7.64.1.cmake类似于: include(ExternalProject) set (PCAP_ROO

CMake无法找到X11包

我正在尝试运行verilog模拟器“verilog到路由(vtr)”。在构建vtr时,我无法启用图形 出现一条警告消息:“EasyGL:未能找到所需的X11库(在debian/ubuntu上尝试sudo apt get install libx11 devto install)”。安装libx11 dev并不能解决问题 在文件“vtr-verilog-to-routing-8.0.0/libs/libeasygl/CMakeLists.txt”中,有以下与此相关的行: #Look for X11

CMake和VCPKG。未使用三元组标志

我想使用CMake构建我自己的库可执行文件。我已经安装了动态和静态x64版本的第三方库,如boost。当我用cmake编译自己的项目时,我无法让它使用静态版本。以下是我的设置: cmake 3.18.1 vcpkg从主分支机构撤出(2020年8月11日) Visual Studio 2019 16.6.1.0 在具有Windows Server Core 2019的docker容器中运行 当我只做cmake..和cmake--build.时,它会像预期的那样默认为x64窗口。我有一个仅作为静

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   3   4   5   6  ... 下一页 最后一页 共 49 页