J'ai un projet QPhiX qui utilise GNU Autotools. Il y a un projet très connexe appelé QPhiX-Codegen dont le premier a besoin. Le processus de construction global fonctionne comme ceci:Exécuter un script pendant l'exécution de la configuration
- Exécutez
make
dans QPhiX-Codegen. Cela va compiler le générateur de code et l'exécuter. En cours d'exécution, il créera du code C++ plat. - Exécutez un script Python qui utilise un moteur de modèle pour intégrer ce code C++ plat dans des fichiers d'en-tête complet et de code source. Cela créera également un
CMakeLists.txt
de sorte que le code généré peut être compilé. - Exécutez
cmake
etmake
sur leMakefile
généré parcmake
pour compiler le code généré dans une bibliothèque statique,libqphix_codegen.a
.
Ces trois choses sont enveloppées dans un script Bash que l'on appelle avec ./generate-and-compile $isa $cxx $cxxflags
. L'ISA pourrait être AVX2
, le compilateur C++ pourrait moi mpiicpc
.
Puis un des commutateurs les répertoires à QPhiX et continue le processus de construction:
- Run
./configure ... --enable-arch=ISA --with-codegen=path/to/codegen/directory CXX=$CXX CXXFLAGS=$CXXFLAGS
pour créer leMakefile
. Dans ceMakefile
, il aura les drapeaux de compilateur nécessaires pour inclure les fichiers d'en-tête générés et un lien verslibqphix_codegen.a
. - Exécutez
make
sur leMakefile
généré par./configure
.
Ce processus expose plus de pas à l'utilisateur que nécessaire. Aussi l'utilisateur doit passer le même drapeau ISA, le même CXX
et le même CXXFLAGS
à deux scripts différents. Ensuite, ils doivent également mettre dans ce chemin vers le générateur de code dans le ./configure
.
Je pense qu'il serait plus pratique pour l'utilisateur d'avoir un générateur de code sous-module git dans le projet QPhiX. Ensuite, le ./configure
pourrait simplement exécuter le script codegen/generate-and-compile
et lui passer les options.
Ma question est: Comment exécuter un script dans le ./configure
? Est-ce que je viens de mettre l'extrait que je veux dans configure.ac
? Ce fichier ressemble comme un script shell avec quelques macros, mais je ne suis pas sûr que ce serait le bon endroit pour le mettre.
Voir aussi [27.8 Emulation de drapeaux par objet] (https://www.gnu.org/software/automake/manual/html_node/Per_002dObject-Flags.html) dans le manuel Automake. – jww