Я - разработчик C++ изучения, пишущий игру первоначально на платформе Mac с помощью XCode, но теперь перемещаясь в кросс-платформенный путем усиления CMake. До сих пор я мог скомпилировать его на моем неприглядном нетбуке Linux, и я соединяю dev среду на этой машине для на кодировании движения. Однако я нахожу, что gcc перекомпилировал каждый файл каждый раз, когда я вношу изменение. Очевидно мне нужна некоторая дополнительная конфигурация к CMakeLists.txt. Мой текущий очень прост. Как так;
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})
Я сконцентрировался до сих пор на C++ как язык, а не системы сборки, придерживаясь XCode для всего. Мое знание Автоинструментов (делают?) и Gcc очень ограничен. Как у меня есть gcc, только перекомпилировали измененный источник?
Я бы переписал ваши cmakelists.txt, используя Chall (возможно переместите файлы в каталоге «SRC», если у вас есть другие * .CPP файлы вокруг) и дайте вашему проекту имя (это устанавливает некоторые важные переменные):
cmake_minimum_required (VERSION 2.8)
project(TRACTION)
file (GLOB TRACTION_SOURCES *.cpp)
find_package (OpenAL)
find_package (OpenGL)
find_package (SFML)
set(CMAKE_CXX_FLAGS "-g -Wall -pg")
add_executable (tractionedge ${TRACTION_SOURCES})
target_link_libraries(tractionedge ${SFML_LIBRARY} ${OPENGL_LIBRARY} ${OPENAL_LIBRARY})
Вы запускаете cmake
каждый раз заново? Если вы просто измените один исходный файл, вы сможете просто повторно запустить make
, и он должен перестроить только один объектный файл перед связыванием. Если вы повторно запустите cmake
, он может пометить все исходные файлы как грязные и пересобрать все заново.
Повторно запускайте cmake
, только если вы измените фактический список используемых исходных файлов или другие важные изменения, подобные этому.
Пересборка только измененных исходников ДОЛЖНА быть поведением по умолчанию. Конечно, если вы измените центральный заголовок, включаемый почти во все зависимые cpp-файлы, это вызовет почти полную пересборку. Посмотрите, что произойдет, если вы измените только один cpp-файл (добавив комментарий или что-то подобное), если компилируется больше, чем эта единица компиляции, тогда я предлагаю вам потратить больше времени на изучение этого, в конечном счете, давая вам мой EMail для более глубокого изучения конфигурации.
Другая возможность заключается в том, что вы компилируете под windows и используете cmake версии 2.8, в котором есть ошибка, связанная с этим. Посмотрите на версию 2.9, чтобы убедиться, что этот дефект устранен: http://www.mail-archive.com/cmake@cmake.org/msg24876.html