Tôi là nhà phát triển C++ viết một trò chơi ban đầu trên nền tảng Mac bằng XCode, nhưng bây giờ chuyển sang nền tảng chéo bằng cách tận dụng CMake. Cho đến nay tôi có thể làm cho nó được biên dịch trên netbook ickle linux của tôi và tôi đang đặt cùng một môi trường dev trên máy này cho trên mã hóa đi. Tuy nhiên tôi thấy rằng gcc biên dịch lại mọi tệp bất cứ khi nào tôi thực hiện thay đổi. Rõ ràng tôi cần một số cấu hình bổ sung cho CMakeLists.txt. Cái hiện tại của tôi rất đơn giản. Như vậy;cmake & gcc biên dịch mọi tệp mỗi lần
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})
Tôi đã tập trung cho đến nay trên C++ làm ngôn ngữ thay vì xây dựng hệ thống bằng cách gắn kết với XCode cho mọi thứ. Kiến thức của tôi về Autotools (make?) Và Gcc rất hạn chế. Làm cách nào để gcc chỉ biên dịch lại nguồn đã thay đổi?
Bạn không nên sử dụng 'GLOB()' vì nếu bạn thêm tệp '.cpp' mới, CMake sẽ không biết về nó và do đó sẽ không tự động chạy lại. Trong trường hợp này, bạn sẽ phải tự chạy cmake một lần nữa, buộc phải xây dựng lại toàn bộ mọi thứ. – Milliams
Tôi không đồng ý. Nhìn vào một số dự án lớn với tấn tệp src (opencv), họ sử dụng GLOB ở khắp mọi nơi, và có, họ chạy lại cmake khi tệp mới được thêm vào (nhưng đó là điều bạn phải làm): "cmake" ít gánh nặng hơn chỉnh sửa các CMakeLists và ... chạy cmake để cập nhật các makefiles !! – gaspard
Milliams, bạn hoàn toàn sai, tôi chỉ thử chạy "cmake" sau khi hoàn thành (và lớn): không đánh dấu tất cả các tệp là dơ bẩn. – gaspard