gpt4 book ai didi

c++ - CMake target_include_directories 和 target_compile_definitions 替代方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:47:33 25 4
gpt4 key购买 nike

CMake 2.8.11 引入了 target_include_directoriestarget_compile_definitions。然而,我正在使用的一些设备有 2.8.9。而且我不想在那里编译和构建最新的 CMake。那么我可以有条件地为这些设备使用的替代方案是什么?

如何从 CMakeLists.txt 中检查此 cmake 是否有 target_include_directories

最佳答案

在早期的 CMake 版本上没有简单的方法来获得此功能,因为它们所基于的相应目标属性(INTERFACE_INCLUDE_DIRECTORIESINTERFACE_COMPILE_DEFINITIONS)缺失。

这是至关重要的,因为 CMake 使用这些目标属性自动将公共(public)和接口(interface)字段传播到依赖目标。从 CMake 代码模拟这种行为是相当困难的。对于一个内部项目,我们在几年前构建了一个系统,在 CMake 支持它之前,它就是这样做的。这基本上需要为 add_libraryadd_executable 编写自己的替换函数,通过用户定义的属性在后台处理传播。系统中的所有目标都必须使用替换功能而不是原来的 CMake 功能,系统才能工作。不过,我强烈建议您在选择此选项之前重新考虑您的 CMake 升级策略。

检查您是否可以使用这些功能的最快方法是执行 cmake_minimum_required (无论如何,您应该始终为所有项目做这件事)。如果你想使用这些命令,只需要至少 2.8.11。如果您不能提出该要求,那么首先就无法使用这些功能,您需要想出一个替代方案。在这种情况下,一开始检查它们的存在意义不大。

关于c++ - CMake target_include_directories 和 target_compile_definitions 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com