36 votes

CMake nom de sortie pour la bibliothèque chargée dynamique?

J'essaie d'écrire des règles cmake pour construire une bibliothèque chargée dynamiquement pour python en utilisant boost.python sur linux. Je voudrais utiliser 'foo' pour le nom du module python. Ainsi, la bibliothèque doit être appelée foo.so. Mais par défaut, cmake utilise des règles standard pour nommer la bibliothèque, donc si j'écris

 add_library(foo foo.cpp)
 

Je vais obtenir libfoo.so en sortie. Même set_target_properties (foo PROPERTIES OUTPUT_NAME "foobar") créera libfoobar.so.

Comment changer ce comportement?

57voto

richq Points 29694

Vous pouvez annuler le préfixe avec cette ligne:

 set_target_properties(foo PROPERTIES PREFIX "")
 

1voto

dimba Points 5389

Le préfixe "lib" est une convention pour unix / linux et est largement exploité par les compilateurs (par exemple lorsque vous liez vous écrivez -lfoo).

Je ne sais pas si vous pouvez forcer cmake à créer foo.so au lieu de libfoo.so, mais vous pouvez peut-être utiliser "libfoo" pour le module python. Une autre option consiste à créer une cible d'installation dans cmake, qui renommera libfoo.so en foo.so

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X