Имя выхода 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 .

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

2 Solutions collect form web for “Имя выхода CMake для динамически загруженной библиотеки?”

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

 set_target_properties(foo PROPERTIES PREFIX "") 

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

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

  • Python runtime_library_dirs не работает на Mac
  • Не удалось импортировать ssl на linux
  • Использование статических / общих библиотек C на языках более высокого уровня
  • Как включить внешнюю библиотеку с пакетом python wheel
  • Способ многократно передавать миллионы элементов в программе python для C в быстрой последовательности
  • CTRL + C не прерывает вызов в общую библиотеку с помощью CTYPES в Python
  • Использование обернутых SWIG-функций из Windows .dll
  • python pip определяет каталог библиотеки и каталог include
  • Python - лучший язык программирования в мире.