Почему версия не устанавливается Cmake? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь настроить 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 , а затем я сам сделал бы символическую ссылку.

Я знаю об обходном решении из здесь , которое указывает использовать VERSION_MAJOR 0 и VERSION_MINOR 1, но я подумал, что атрибут Version в проекте должен позаботиться об этом.

Вопрос: Почему не устанавливается версия

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если установлена ​​версия проекта, это значение можно повторно использовать для построенных целей. Просто прочитайте версию проекта вместо дублирования значений

Установить версию проекта:

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_property(test_utility PROPERTIES VERSION ${PROJECT_VERSION})
0 голосов
/ 16 января 2019

Версия проекта, которая устанавливается параметром VERSION project(), обозначает только версию проекта, а не версию создаваемых им библиотек.

Для заданной версии библиотеки необходимо установить VERSION свойство библиотеки target :

set_target_properties(test_utility PROPERTIES VERSION "0.1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...