2011-02-08 12 views
7

struttura di directory del mio progetto è sostanzialmente la seguente:Avendo CMake mettere generato i binari in una specifica struttura di directory con un patrimonio

root/src

root/patrimonio

root/library

I al momento ha CMake configurato per compilare il sorgente, compilare la libreria e quindi collegarli, chiamando make dalla directory root.

Quindi devo spostare manualmente l'eseguibile nella directory delle risorse originali per farlo funzionare, poiché è lì che si aspetta di essere (e vogliamo testare con la nostra struttura di directory in risorse il più vicino a quello che ci aspettiamo che sia sii quando è finito).

Quindi, c'è un modo per dire a CMake di attaccare automaticamente il binario compilato in quella directory, oltre a copiare le risorse? Dal momento che stiamo facendo uscire da build di origine, l'attaccatura di nuovo nella cartella delle risorse dell'origine del progetto originale sembra strana.

In breve, due domande: c'è un modo per far sì che CMake copi sia le risorse che il codice, e c'è un modo per far sì che copi l'eseguibile generato in una posizione specifica nell'albero di compilazione?

Qualsiasi aiuto sarebbe apprezzato --- grazie!

risposta

9

Ecco un semplice esempio con una struttura come la vostra:

  • root/src/main.cpp (solo file di origine)
  • root/attività (dove voglio l'eseguibile andare)

Ecco il file cmake:

PROJECT(HelloCMake) 
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${HelloCMake_SOURCE_DIR}/assets) 
add_executable (HelloCMake src/main.cpp) 

Quando costruisco contro questo utilizzando Visual Studio ho l'outp ut inserito in root/assets/debug. Dovrei scavare per capire come sbarazzarmi della cartella di configurazione extra (debug). Non perfetto, ma spero che ti metta sulla buona strada.

Modifica ... Ancora meglio:

INSTALL(TARGETS HelloCMake DESTINATION ${HelloCMake_SOURCE_DIR}/assets) 
+0

Questo sembra funzionare perfettamente per il nostro progetto. "make install" e VS entrambi attaccano le cose nel posto giusto, a quanto pare! (Solo un pensiero molto minore è che sembra che stia usando male il comando install, che in qualche modo non mi è familiare, ma funziona! Non so in quale altro modo sarebbe stato fatto.) – Kozaki

+0

Questo è oro per i progetti Cmake con certa complessità – GameDeveloper

Problemi correlati