2009-10-14 6 views
35

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

add_library(foo foo.cpp) 

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

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

ответ

56

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

set_target_properties(foo PROPERTIES PREFIX "") 
1

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

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

Смежные вопросы