La construction d'une bibliothèque à l'aide d'autotools de cmake

Ceci est mon premier essai avec cmake et j'aimerais avoir, si possible, des retours sur ce que j'ai fait depuis que certains problèmes subsistent.

Dans le CMakeLists.txt du dossier de bibliothèque, j'ai créé deux makefile objectifs: configure-antlr3c et antlr3c. La première cible exécute les autotools configuration d'un script shell, le second exécute le rendre exécutable à la construction de la bibliothèque:

# CMakeLists.txt in libantlr3c-3.1.3 
add_custom_target(
  configure-antlr3c
  ${SHELL_EXECUTABLE} configure
  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

add_custom_target(
  antlr3c
   ${MAKE}
   DEPENDS configure-antlr3c
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

Le principal problème est queconfigure-antlr3c cible est toujours "out of date", de sorte qu'il sera toujours exécutée, même si aucun changement ne s'est produit. En outre, j'ai nécessairement besoin de générer mon cmake makefiles dans un répertoire séparé (pas dans le répertoire racine de mon projet) pour éviter la substitution de la autotools Makefile de la bibliothèque...

Quelqu'un a eu ce problème (bâtiment autotools projets avec cmake) ? Et si oui, quels ont été vos solutions ?

Merci.

EDIT : Solution
Dans la racine CMakeLists.txt:

include(ExternalProject)
ExternalProject_Add(
  libantlr3c
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  BUILD_COMMAND make
  BUILD_IN_SOURCE 1
)
  • Vous devez ajouter votre solution à un bloc Réponse; pas dans la question.
InformationsquelleAutor Julio Guerra | 2011-05-12