2009-10-14 10 views
35

Próbuję napisać zasady cmake do budowania biblioteki ładowanej dynamicznie dla Pythona za pomocą boost.python na Linux. Chciałbym użyć "foo" dla nazwy modułu Pythona. Tak więc biblioteka musi być nazwana foo.so. Ale domyślnie CUpewnij wykorzystuje standardowe zasady nazewnictwa biblioteki, więc jeśli piszęNazwa wyjściowa CMake dla biblioteki ładowanej dynamicznie?

add_library(foo foo.cpp) 

dostanę libfoo.so na wyjściu. Nawet set_target_properties(foo PROPERTIES OUTPUT_NAME "foobar") utworzy libfoobar.so.

Jak zmienić to zachowanie?

Odpowiedz

56

można rozbroić prefiks z tej linii:

set_target_properties(foo PROPERTIES PREFIX "") 
1

Prefiks "lib" jest konwencją dla systemu Unix/Linux i jest szeroko wykorzystywany przez kompilatory (np. Gdy łączysz swoje zapisywanie -lfoo).

Nie wiem, czy można wymusić cmake, aby utworzyć foo.so zamiast libfoo.so, ale może można użyć "libfoo" do modułu Pythona. Inną opcją jest stworzenie zainstalować bramkę w cmake, które renmae libfoo.so do foo.so

Powiązane problemy