Подтвердить что ты не робот

Имя выхода CMake для динамически загруженной библиотеки?

Я пытаюсь написать cmake-правила для создания динамически загруженной библиотеки для python, используя boost.python on linux. Я хотел бы использовать 'foo' для имени модуля python. Итак, библиотеку нужно называть foo.so. Но по умолчанию cmake использует стандартные правила для именования библиотек, поэтому, если я пишу

add_library(foo foo.cpp)

Я получу libfoo.so на выходе. Даже set_target_properties(foo PROPERTIES OUTPUT_NAME "foobar") создаст libfoobar.so.

Как изменить это поведение?

4b9b3361

Ответ 1

Вы можете отключить префикс с помощью этой строки:

set_target_properties(foo PROPERTIES PREFIX "")

Ответ 2

Префикс "lib" - это соглашение для unix/linux и широко используется компиляторами (например, когда вы связываете ссылку write -lfoo).

Я не знаю, могу ли заставить cmake создать foo.so вместо libfoo.so, но, возможно, вы можете использовать libfoo для модуля python. Другой вариант - создать цель установки в cmake, которая будет renmae libfoo.so в foo.so