gpt4 book ai didi

cmake - 如何为目标、文件名和导出名称分别命名?

转载 作者:行者123 更新时间:2023-12-05 05:45:32 25 4
gpt4 key购买 nike

我有一些目标 - 假设它是一个库 - 在我正在处理的存储库的 CMakeLists.txt 文件中。我想将以下三个分开:

  1. 我在 CMakeLists.txt 中使用的目标名称;说它需要是 foo
  2. 导出的目标名称,其他人将在导入我安装的存储库后使用:前缀是 mypackage,我希望目标名称是 bar,所以它将一起被进口商用作 mypackage::bar
  3. 库文件基名;我希望它是 libbaz,而不是 libfoolibbar

我怎样才能做到这一点?

可能能够使用 add_library() 命令的 ALIAS 修饰符实现这三个中的两个,但我想要所有三个.

最佳答案

有一些目标属性可以控制它:OUTPUT_NAMEEXPORT_NAME。以下是我将如何实现您的方案:

cmake_minimum_required(VERSION 3.22)
project(mypackage)

add_library(foo ...)
add_library(mypackage::bar ALIAS foo)

set_target_properties(
foo
PROPERTIES
OUTPUT_NAME "baz"
EXPORT_NAME "bar"
)

include(GNUInstallDirs)
set(mypackage_INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATADIR}/cmake/mypackage"
CACHE STRING "Installation destination for CMake files")

install(TARGETS foo EXPORT mypackage-targets)
install(
EXPORT mypackage-targets
DESTINATION "${mypackage_INSTALL_CMAKEDIR}"
NAMESPACE mypackage::
)

# not shown: other install rules, components (incl. above), etc.

查看文档:

关于cmake - 如何为目标、文件名和导出名称分别命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71343475/

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