2011-10-23 3 views
0

J'essaie de configurer CMake pour générer une solution MSVC (2010) pour notre projet, et j'ai besoin de configurer les projets afin qu'ils utilisent notre système de construction spécifique plutôt que de compiler en utilisant la ligne de commande par défaut.Comment configurer CMake pour que la solution VS utilise une ligne de commande de construction spécifique?

Voici ce que le fichier de projet ressemble à VS2008 (que nous générons en utilisant un autre script que je voudrais sortir de):

 <Tool 
      Name="VCNMakeTool" 
      BuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%%" 
      ReBuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c &amp;&amp; ../bam.bat -j %%NUMBER_OF_PROCESSORS%%" 
      CleanCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c " 
      Output="..\..\..\common\win32\container.exe" 
      PreprocessorDefinitions="" 
      IncludeSearchPath="" 
      ForcedIncludes="" 
      AssemblySearchPath="" 
      ForcedUsingAssemblies="" 
      CompileAsManaged="" 
     /> 

Il est essentiellement les trois LigneCommande paramètres que je voudrais être en mesure de spécifier à partir de ma config cmake.

J'ai trouvé la commande build_command dans la documentation, mais à partir de la description, cela ressemble à l'inverse de ce que je veux, c'est-à-dire écrire la ligne de commande qu'elle va générer plutôt qu'une chaîne et définissez la ligne de commande à cela.

Quelque chose qui semble un peu lié est la fonction de compilation croisée dans CMake mais je suis sûr que si c'est un bon moyen de le faire.

Fondamentalement, je veux simplement VS exécuter un fichier batch quand je fais construire, puis analyser les résultats à obtenir de beaux messages d'erreur, etc.

Répondre

1

Il me semble que ce que vous voulez est simplement une "commande personnalisée" dans le langage CMake.

Quelque chose comme:

set(custom_exe "${CMAKE_CURRENT_BINARY_DIR}/common/win32/container.exe") 

add_custom_command(OUTPUT ${custom_exe} 
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bam.bat -j $ENV{NUMBER_OF_PROCESSORS} 
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bam.bat 
) 

add_custom_target(bam ALL DEPENDS ${custom_exe}) 
+0

Merci, j'ai été en mesure d'utiliser cela à un certain succès, alors je vais le marquer comme la réponse. – Srekel

1

Peut-être que vous avez besoin d'écrire votre propre CMake Toolchain. Vous pouvez voir des exemples de chaînes d'outils dans CMAKE_ROOT/share/Modules/Platform, ou in CMake documentation, mais je ne suis pas sûr que cmake puisse générer une solution MSVC pour le compilateur personnalisé.

+0

Merci, oui, c'est ce que je voulais dire ci-dessus avec "une compilation croisée fonction". Peut-être que c'est la meilleure/seule façon de faire ce que je veux. – Srekel

Questions connexes