2015-06-24 17 views
17

Niektóre biblioteki stosują różne konwencje dla swoich nazw plików, takie jak biblioteki PAM - pam_unix.so, a nie libpam_unix.so.Jak zmienić nazwę pliku biblioteki w CMake?

Jak przesłonić nazwę pliku biblioteki docelowej w CMake, aby uzyskać coś w rodzaju new_thing.so zamiast domyślnego libnew_thing.so?

Odpowiedz

23

Użyć PREFIX lub właściwości OUTPUT_NAME docelowe:

set_target_properties(new_thing PROPERTIES PREFIX "") 

lub

set_target_properties(new_thing PROPERTIES OUTPUT_NAME "new_thing") 
+3

Jeśli chcesz zmienić koniec nazwy pliku, użyj 'SUFFIX'. – CivFan

10

Ponieważ ma to związek z nazwą pliku, , możesz pomyśleć o odpowiedzi na pytanie: install. (I rzeczywiście, istnieje RENAME klauzula, ale to czerwony śledź).

Zamiast zmienić target, używając komendy set_target_properties.

Obiekty biblioteki mają wbudowaną właściwość, PREFIX. Drugim istotnym jest SUFFIX. Te dwie właściwości zostają przypisane do nazwy docelowej, aby określić ostateczną nazwę pliku podczas instalacji.

Dla OQ:

# By default, the library filename will be `libnew_thing.so` 
add_library(new_thing ${NEW_THING_SRCS}) 

# This changes the filename to `new_thing.so` 
set_target_properties(new_thing PROPERTIES PREFIX "") 

powiedzmy, że też chciał nazwę, aby mieć wersję:

# This then changes the filename to `new_thing.so.1`, 
# if the version is set to "1". 
set_target_properties(new_thing 
     PROPERTIES PREFIX "" 
        SUFFIX ".so.${NEW_THING_VER}" 
     ) 
Powiązane problemy