2010-08-21 3 views
2

J'utilise CMake pour mon système de construction et dans le projet, nous aurons un tas de fichiers de configuration. Certains d'entre eux devront juste être copiés, d'autres devront être modifiés par ordinateur. J'utilise actuellement la commande "configure_file" de CMake pour copier/remplacer des parties du fichier. Cela fonctionne très bien, et j'adore comment je peux utiliser n'importe quelle variable de CMake dans la routine de configuration.CMake Configurer la règle de génération de fichier

Mais si vous changez le fichier d'origine, CMake ne le récupèrera pas et vous devrez relancer cmake pour qu'il configure le répertoire. Quand je lance "make", je veux qu'il prenne en compte que j'ai changé le fichier et relance la configuration.

Il reconfigurera également les fichiers toujours, même si le fichier qu'il remplace est plus récent. Je veux qu'il agisse comme une cible personnalisée.

Je pense que je peux le faire avec add_custom_command, mais je ne pense pas pouvoir exécuter une commande CMake depuis add_custom_command. Donc, est-il possible de dupliquer le comportement de configure_file dans CMake?

Répondre

1

J'ai récemment effectué une mise à niveau vers CMake 2.8. Il semble qu'il a automatiquement le comportement exact que je voulais.

0

Je ne pense pas que cela ait une réponse facile. Je vois deux options:

  1. Pour déclencher une nouvelle série de CMake si un changement d'entrée, vous pourriez être en mesure de rendre votre fichier d'entrée dépendent CMakeLists.txt.

  2. Pour exécuter une commande cmake dans le cadre de et add_custom_command, il y a la variable ${CMAKE_COMMAND}, qui vous donnera le chemin du cmake en cours d'exécution. Vous pouvez, dans le cadre de l'étape de configuration, générer un fragment de code CMake (qui appelle configure_file) qui est appelé à l'aide de l'option -P. Passez les substitutions sur la ligne de commande en utilisant -D ou écrivez-les dans le fragment CMake.

Questions connexes