2009-10-14 15 views
35

Estoy intentando escribir cmake rules para compilar una biblioteca cargada dinámicamente para python usando boost.python en linux. Me gustaría usar 'foo' para el nombre del módulo de Python. Por lo tanto, la biblioteca debe llamarse al foo.so. pero por defecto, cmake utiliza reglas estándar para la denominación de biblioteca, por lo que si escriboCMake nombre de salida para la biblioteca cargada dinámicamente?

add_library(foo foo.cpp) 

voy a tener libfoo.so en la salida. Even set_target_properties(foo PROPERTIES OUTPUT_NAME "foobar") creará libfoobar.so.

Cómo cambiar este comportamiento?

Respuesta

56

Usted puede desarmar el prefijo con esta línea:

set_target_properties(foo PROPERTIES PREFIX "") 
1

El prefijo "lib" es una convención para unix/linux y los compiladores lo explotan ampliamente (por ejemplo, cuando lo vincula, escribe -lfoo).

No sé si puede forzar a cmake a crear foo.so en lugar de libfoo.so, pero quizás pueda usar "libfoo" para el módulo de python. Otra opción es crear instalar objetivo en cmake, que renmae libfoo.so a foo.so

Cuestiones relacionadas