首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CMake错误:安装导出包含的目标要求的目标不在任何导出集中

这个错误通常在使用CMake构建项目时出现。它表示在安装导出时,所包含的目标需要存在于至少一个导出集中,但找不到目标所在的导出集。

要解决这个错误,首先需要理解CMake的导出集概念和相关概念。

CMake中的导出集(export set)是指一组目标,这些目标将在安装时导出到指定目录,以供其他项目或模块使用。导出集是通过install(TARGETS ... EXPORT ...)命令进行定义和配置的。

当遇到上述错误时,我们可以通过以下步骤来解决问题:

  1. 检查CMakeLists.txt文件:检查CMakeLists.txt文件,确认是否正确配置了install(TARGETS ... EXPORT ...)命令。确保目标在导出集中被正确声明。
  2. 确认目标是否存在于导出集中:检查CMakeLists.txt文件,查找导出集的声明并确认目标是否正确添加到了相应的导出集中。可以通过类似下面的代码片段来添加目标到导出集:
代码语言:txt
复制
set_target_properties(target_name PROPERTIES
    EXPORT export_name
)
  1. 确认导出集是否在安装导出时被正确使用:检查CMakeLists.txt文件,确认install(EXPORT ...)命令是否正确使用了之前定义的导出集。例如:
代码语言:txt
复制
install(EXPORT export_name
    DESTINATION ${CMAKE_INSTALL_PREFIX}/path/to/export
)
  1. 检查目标是否被正确定义:确保目标被正确定义并且可以在构建过程中正常生成。可以使用add_executable()add_library()命令来定义目标。
  2. 进一步调试:如果上述步骤都没有解决问题,可以尝试使用CMake的一些调试工具来进一步分析和定位错误。例如,可以使用message()命令输出一些调试信息,或者使用CMake的--trace-source参数来输出详细的调试信息。

以上是针对CMake错误:"安装导出包含的目标要求的目标不在任何导出集中"的解决方案。关于CMake和相关概念的更详细信息,您可以参考腾讯云的CMake产品介绍链接:https://cloud.tencent.com/document/product/624

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面向 C++ 的现代 CMake 教程(四)

在本章中,我们将介绍如何导出目标,以便另一个项目可以在不安装的情况下使用它们,以及如何安装我们的项目,以便它们可以很容易地被系统上的任何程序使用。...现在我们的目标已经是“安装兼容”的,我们可以安全地生成并安装它们的导出文件。 安装目标导出文件 我们在无需安装导出部分稍微讨论了目标导出文件。...不要被这个困惑 - 目标导出文件不是一个配置文件,所以您现在还不能使用find_package()来消耗已安装的目标。然而,如果需要,您可以直接包含导出文件。...它被视为一个包定义,负责提供任何包函数和宏,检查要求,查找依赖项,并包含目标导出文件。...它将包含列表文件中提供的$LIB_INSTALL_DIR的路径,但它将相对于安装路径进行计算。然后,我们使用它来包含目标导出文件。

67800

CMake 秘籍(六)

然而,始终将 RPATH 硬编码指向构建树或安装前缀也同样错误:这两个位置中的任何一个都可能被删除,导致可执行文件损坏。...该文件将包含我们导出的目标。我们还添加了一个测试,以检查项目的安装和导出是否按预期工作。 如何操作 再次,根CMakeLists.txt文件与前一个食谱相比未更改。...,其中包含了所有我们要求 CMake 自动生成的文件。...我们准备了一个名为IntelMKL的INTERFACE库。这可以像任何其他目标一样使用,并将为任何依赖目标设置包含目录、编译器选项和链接库。...CMake INTERFACE库是构建系统中的目标,但不直接创建任何构建输出。然而,由于它们是目标,我们可以在它们上面设置属性。就像“真实”目标一样,它们也可以被安装、导出和导入。

40800
  • CMake库打包以及支持find_package

    本文对CMake中库的打包,安装,导出以及支持find_package,使其能够很简单的应用到其他的项目中进行详细的总结。...CMake导出库经过上述步骤,我们已经安装了我们库的所有东西,现在其他用户可以通过include_directories和add_libraries以及制定链接的目标等相应操作来使用我们的库,但是我们希望能够像...为此,CMake提供了目标导出的功能。导出一个目标能够让我们重复利用一个CMake工程,比如一些变量等等,就像用户自己定义的一样,最常见的就是OpenCV和NDK这类的工程。...为了使用导出功能,需要创建一个my_library.cmake文件,其中包含了所有编译和安装目标的引用,用户只需要包含这个文件就可以使用前面编译和安装的库。...[minor]/${CMAKE_BUILD_TYPE}/中,这条命令也将目标加入导出集合中。

    54000

    万字总结编译利器CMake,从入门到项目实战演练

    使用要求可以更好地控制库或可执行文件的链接和include行,同时还可以更好地控制CMake内部目标的传递属性。...利用使用要求的主要命令是: 目标编译定义 目标编译选项 目标包含目录 目标链接库 让我们从第2步中重构代码,以利用现代的CMake方法编写使用要求。...EXPORT关键字生成并安装一个CMake文件,该文件包含用于从安装树中导入install命令中列出的所有目标的代码。...这是通过将以下内容添加到顶级CMakeLists.txt的底部来完成的: 安装(导出 MathFunctionsTargets 文件 MathFunctionsTargets.cmake 目标...如果一切设置正确,您将看到CMake将生成如下错误: 目标“MathFunctions”INTERFACE_INCLUDE_DIRECTORIES 属性包含 路径: “/Users/robert/

    1.3K00

    从零开始编写一个cmake构建脚本

    简介本文档介绍cmake构建脚本编写,包含的一些主要元素和命名规范。...cmake构建脚本编写步骤cmake构建工具版本要明确# 命令名字要小写,这条语句要求构建工具至少需要版本为3.12或以上cmake_minimum_required (VERSION 3.12)工程名及库的版本号明确在编写工程名以及版本号时有几点需要注意...BUILD_SAMPLE "Build tests" OFF) # 变量名BUILD_SAMPLE 变量说明"Build tests" 状态 OFF:表示不打开 ON:表示打开配置打印调试信息对于一些可能出现的错误或者警告...库对外提供被find_package的能力install后,所有导出的头文件、动态库、静态库、可执行二进制、cmake文件都可以安装到指定路径下install(TARGETS ${TARGET_NAME...} #TARGETS 安装的目标文件,可以是可执行文件、动态库、静态库 EXPORT ${TARGET_NAME} #需要对外导出的文件,该选项用于生成xxxConfig.cmake

    15520

    Android对so体积优化的探索与实践

    背景 应用安装包的体积影响着用户的下载时长、安装时长、磁盘占用空间等诸多方面,因此减小安装包的体积对于提升用户体验和下载转化率都大有益处。...编译:将预处理后的文件编译成汇编代码。 汇编:将汇编代码汇编成目标文件,目标文件中包含机器指令(大部分情况下是机器指令,见下文 LTO 一节)和数据以及其他必要信息。...简要介绍一下目标文件,目标文件(扩展名 .o )也是 ELF 文件,所以也是由 section 组成的,只不过它只包含了相应源文件的内容:函数会放到 .text 样式的 section 中,一些可读写变量会放到...有两种方式可以把 C++ 的函数添加到导出符号中:第一种是查看未优化 so 的导出符号表,找到目标函数被修饰后的符号,然后填写到 version_script.txt 中。...方案收益 优化 so 对安装包体积和安装后占用的本地存储空间有直接收益,收益大小取决于原 so 冗余代码数量和导出符号数量等具体情况,下面是部分 so 优化前后占用安装包体积的对比: 下面是上述 so

    2.7K31

    xmake v2.3.7 发布, 新增 tinyc 和 emscripten 工具链支持

    ,能够让用户把更多的精力集中在实际的项目开发上。...xmake f --toolchain=[tinyc|emscripten] xmake 我们还在新版本中,额外提供了两个安装包,内置集成了 TinyC 编译环境,整个安装包只需要 5M,还包含了 winsdk...如果你们用过 autotools/cmake 去交叉编译生成 mingw/android/ios 的目标程序,cmake 和 autotools 还能够简单一致的处理么?...递归导出安装的包 xmake 之前提供了一个命令,可以导出通过 xmake 安装的所有第三方依赖包。...xmake require --export 但是,之前的版本对应一些存在依赖的包,导出时候只会导出自身,它的所有依赖是不会被导出的,而这个版本中,我们对其进行了改进,将对应的所有依赖包也进行了导出。

    1.3K10

    面向 C++ 的现代 CMake 教程(二)

    有时,这样的使用目标必须满足一些特定的要求:链接一些库,包含一个目录,或者需要特定的编译特性。所有这些都是要求,所以在某种意义上文档是正确的。问题是,在文档的其他任何上下文中,它们都不被称为要求。...,并且你不能安装或导出别名(它们在生成的构建系统中不可见)。...接下来,使用生成表达式(在本章最后部分解释),我们将其包含目录设置为当目标导出时为${CMAKE_CURRENT_SOURCE_DIR}/src,安装时为include/Eigen(这将在本章最后解释)...$ – 当目标用install(EXPORT)导出时或在INSTALL_NAME_DIR中评估时,安装前缀为;否则,为空。...重要提示:* 如果你需要内部预编译头文件但仍然希望安装导出目标,那么第四章,《使用目标》中描述的$生成器表达式将防止头文件出现在使用要求中。

    70600

    CMake简易指南

    IDE 的兼容,实际使用时尽可能使用更新版本的 cmake 可以避免一些不必要的错误。...的运行大致分两到三步,下述样例属于cmake 控制台命令:配置:输入源文件目录,指定目标编译系统,添加编译选项,生成目标编译系统编译:输入目标编译系统,执行编译安装(可选):将编译产物安装到指定位置(...--target install步骤二编译时也可以使用目标编译系统的编译命令触发编译,需要编写跨平台编译脚本时,使用cmake --build .可以适配任何环境配置配置阶段的参数主要为以下几种:-G...所以遇到一些非预期错误时,请先删除缓存路径下的CMakeCache.txt文件。...# 指定最低cmake版本要求cmake_minimum_required(VERSION 3.14)# 创建项目标识project(mylib)# 添加名为mylib的目标,类型为动态库add_library

    87050

    xmake v2.6.4 发布,大量包管理特性改进

    Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。...它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。...:导出符号例子 通过指定符号导出,我们可以使得生成的动态库尽可能的小,无关的内部符号完全不去导出它们,另外这个规则支持 linux, macOS 和 windows,更加的通用。...xrepo env 环境配置 #2117: 支持为任意平台传递工具链到包 #2121: 支持导出指定的符号列表,可用于减少动态库的大小 改进 #2036: 改进 xrepo 支持从配置文件批量安装包,...例如:xrepo install xxx.lua #2039: 改进 vs generator 的 filter 目录展示 #2025: 支持为 phony 和 headeronly 目标生成 vs 工程

    56610

    人工智能—产生式推理

    它包含了将问题从初始状态转换成目标状态所需要的所有变换规则,所以规则库是产生式系统进行问题求解的基础。 ...要求采用正向推理,求满足以上事实的动物是何种动物。  把“动物有羽毛,动物善飞”放入综合数据库检查综合数据库中是否包含问题的解,结果为否。...(从结论推条件是否满足初始条件)  算法过程  将问题的初始证据和要求证的目标(假设)分别放入综合数据库和假设集。从假设集中选出一个假设,检查该假设是否在综合数据库中。若在,则该假设成立。...若假设不在综合数据库中,则执行下一步。检查该假设是否可由知识库的某个知识导出。若不能由某个知识导出,则询问用户该假设是否为可有用户正是的原始事实。...此时假设集中的假设已全部被综合数据库中的已知事实所满足。  优点  不必寻找和使用那些与假设目标无关的信息和知识,推理过程的目标明确,也有利于向用户提供解释。

    1K20

    CMake 秘籍(五)

    } 我们配置外部项目,使其始终处于构建状态: BUILD_ALWAYS 1 安装步骤不会执行任何操作(我们将在第 4 个配方中重新讨论安装,即“编写安装程序”中的“安装超级构建”): INSTALL_COMMAND...我们的示例将 INSTALL_COMMAND 留空,我们将在 第十章,编写安装程序中更详细地讨论使用 CMake 进行安装。 测试选项:对于从源代码构建的任何软件,运行测试总是一个好主意。...这样的文件将库作为目标导出,供第三方项目使用。目标包含版本、配置和库的位置,即有关目标如何配置和构建的完整信息。...我们仅列出了 C、C++和 Fortran 语言的一些可能的有效文件扩展名,但 CMake 可以识别更多。如果项目中的文件扩展名由于任何原因不在识别的扩展名之列,该怎么办?...使用INTERFACE属性,库将仅被链接到以当前目标作为依赖的目标。 使用PUBLIC属性,库将被链接到当前目标以及任何以它作为依赖的其他目标。

    73120

    《C++与人工智能库的完美邂逅:环境配置全攻略》

    这包括安装合适的编译器,如 GCC 或 Visual Studio 等,以及确保系统满足所选人工智能库的依赖要求。...对于 PyTorch,同样需要根据系统和计算设备的要求安装相应的依赖。例如,在使用 GPU 时,需要安装正确版本的 CUDA 和 cuDNN,并配置好环境变量。...导出 C++接口:使用 PyTorch 提供的工具将 Python 模型导出为 C++可用的格式,如 TorchScript。这一步骤使得 C++代码能够加载和使用在 Python 中训练好的模型。...编译或安装:在 Windows 系统上,可以使用 CMake 生成 Visual Studio 项目并进行编译;在 Linux 系统上,可以使用 make 命令进行编译和安装。3. ...例如,库文件链接错误、找不到头文件、依赖库版本不匹配等。对于库文件链接错误,仔细检查项目的链接设置,确保库文件路径正确,并且没有遗漏任何依赖库。如果是找不到头文件,检查包含目录的设置是否正确。

    13000

    cmake基础示例:如何编译【跨平台】的动态库和应用程序

    ,两个函数 my_add 和 my_sub 的符号才可能被导出到 mylib.lib 文件中。...打开 VSCode,然后打开测试代码文件夹 cmake_demo: 因为需要使用cmake工具来构建,所以需要在VSCode安装 cmake 插件。...(如何安装 VSCode 插件就不赘述了) 第一步: cmake 配置 按下键盘 ctrl + shift + p,在命令窗口中选择 Cmake: Configure,如果没看到这个选项,就手动输入前面的几个字符...按下 shift + F7,或者单击VSCode底部的 Build 图标: 弹出编译目标列表: 这里选择 ALL_BUILD,也就是编译所有的目标:mylib 和 myapp,输出如下: 来看一下编译的输出文件...myapp.exe 是编译得到的可执行程序。 第三步: 执行 我们先在命令行窗口中执行一下myapp.exe: 提示错误:找不到动态链接库!

    3.2K20

    面向 C++ 的现代 CMake 教程(三)

    对象文件包含以下元素: 一个 ELF 头,用于标识目标操作系统、ELF 文件类型、目标指令集架构以及 ELF 文件中找到的两个头表的位置和大小信息——程序头表(不在对象文件中)和段头表。...,所以它正确地从nested目标导出。...如今,许多项目都符合这一要求,在安装过程中提供了这个文件给 CMake。如果你计划使用某个流行的库而它没有提供此文件,暂时不必担心。...这个行为与之前的例子不同,在那里我们明确定义了yaml-cpp目标。如果库不提供安装阶段(或者二进制版本的名字不匹配),链接器将抛出错误。...REQUIRED关键字指示 CMake 在找不到它们时抛出错误。接下来,我们按照以下步骤添加一个自定义的coverage目标: 清除之前运行的任何计数器。

    67100
    领券