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

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

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

 set_target_properties(foo PROPERTIES PREFIX "") 

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

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