为什么Cmake没有设置版本?

问题描述 投票:0回答:2

我正在尝试将 CMAKE 设置为构建系统,所以我对它还很陌生。在发布这个问题之前已经做了相当多的广泛研究,但我找不到答案。我过去一天一直在寻找,一些链接是这里和这里,以及在官方文档中,但我不明白我做错了什么。

问题:我正在尝试使用cmake构建动态库,但版本未设置。

这是我的文件夹结构,使用“tree”命令生成。 (我已经从构建目录中取出了一些内容,因此很容易阅读)

.
├── build
├── CMakeLists.txt
├── test_utility.cpp
└── test_utility.h

这是我的CMakeLists.txt

cmake_minimum_required(VERSION 3.13)

project(TestLib
        VERSION 0.1
        DESCRIPTION "Testing the library target utility in Cmake"
        LANGUAGES CXX)

add_library (test_utility SHARED test_utility.cpp test_utility.h)

然后我进入构建目录并运行 cmake .. -G "Unix Makefiles"cmake --build . 。一切都顺利完成,除了一件事: 结果是 libtest_utility.so 而我想要 libtest_utility.so.0.1 然后我会自己做符号链接。

我从here知道了解决方案,告诉使用VERSION_MAJOR0和VERSION_MINOR1,但我认为项目中的版本属性应该处理它。

问题:为什么没有设置版本

cmake
2个回答
1
投票

项目的版本由project()

VERSION
参数设置,仅表示项目的版本,而不表示其生成的库的版本。

对于设置库的版本,需要设置库的VERSIONpropertytarget:

set_target_properties(test_utility PROPERTIES VERSION "0.1")

0
投票

如果设置了项目的版本,则可以将该值重新用于构建的目标。只需阅读项目版本而不是重复值

设置项目的版本:

project(TestLib
    VERSION 0.1
    DESCRIPTION "Testing the library target utility in Cmake"
    LANGUAGES CXX
)

使用

PROJECT_VERSION

的值
add_library (test_utility SHARED test_utility.cpp test_utility.h)
set_target_properties(test_utility PROPERTIES VERSION ${PROJECT_VERSION})
© www.soinside.com 2019 - 2024. All rights reserved.