Sono uno sviluppatore C++ di apprendimento che scrive inizialmente un gioco sulla piattaforma Mac utilizzando XCode, ma che ora passa a una piattaforma incrociata sfruttando CMake. Finora posso averlo compilato sul mio ickle linux netbook e sto mettendo insieme un ambiente di sviluppo su questa macchina per la codifica on the go. Comunque sto trovando che gcc ricompila ogni file ogni volta che apporto una modifica. Chiaramente ho bisogno di qualche configurazione aggiuntiva a CMakeLists.txt. Il mio attuale è molto semplice. Così;cmake & gcc compila ogni file ogni volta
cmake_minimum_required (VERSION 2.8)
set (source
Creature.cpp
DisplayManager.cpp
Engine.cpp
EngineState.cpp
Entity.cpp
GameWorld.cpp
GfxSFML.cpp
Item.cpp
Map.cpp
Position.cpp
Projectile.cpp
ScreenTile.cpp
SquadAI.cpp
Terrain.cpp
UIButton.cpp
UICharPanel.cpp
UIView.cpp
Utility.cpp
Weapon.cpp
fov.cpp
main.cpp
)
find_package (OpenAL)
find_package (OpenGL)
find_package (SFML)
set(CMAKE_CXX_FLAGS "-g -Wall -pg")
add_executable (tractionedge ${source})
target_link_libraries(tractionedge ${SFML_LIBRARY} ${OPENGL_LIBRARY} ${OPENAL_LIBRARY})
mi sono concentrato finora su C++ come linguaggio piuttosto che sistemi costruire da attaccare con XCode per tutto. La mia conoscenza di Autotools (make?) E Gcc è molto limitata. Come posso fare in modo che gcc ricompili solo la fonte cambiata?
Non si dovrebbe usare 'GLOB()' dal momento che se si aggiunge un nuovo file '.cpp', CMake non lo saprà e quindi non verrà eseguito di nuovo automaticamente. In questo caso dovresti eseguire di nuovo manualmente cmake, forzando una ricostruzione completa di tutto. – Milliams
Non sono d'accordo. Guardate alcuni grandi progetti con tonnellate di file src (opencv), usano GLOB ovunque, e sì, rieseguono cmake quando vengono aggiunti nuovi file (ma è qualcosa che dovete fare comunque): "cmake" è meno di un peso quindi modificare le CMakeLists e ... eseguire cmake per aggiornare i makefile !! – gaspard
Milliams, ti stai sbagliando, ho appena provato a eseguire "cmake" dopo una compilazione completa (e di grandi dimensioni): questo non contrassegna tutti i file come sporchi. – gaspard