2014-09-11 18 views

Trả lời

217

Tạo (hoặc đúng hơn là Makefile) là một hệ thống xây dựng - nó điều khiển trình biên dịch và các công cụ xây dựng khác để xây dựng mã của bạn.

CMake là trình tạo hệ thống xây dựng. Nó có thể tạo ra Makefiles, nó có thể tạo ra các tệp xây dựng Ninja, nó có thể tạo ra các dự án KDEvelop hoặc XCode, nó có thể tạo ra các giải pháp Visual Studio. Từ cùng một điểm bắt đầu, cùng một tệp CMakeLists.txt. Vì vậy, nếu bạn có một dự án độc lập nền tảng, CMake là một cách để làm cho nó xây dựng hệ thống độc lập là tốt.

Nếu bạn có các nhà phát triển Windows được sử dụng cho Visual Studio và nhà phát triển Unix, những người thề bởi GNU Make, CMake là (một trong) cách đi.

Tôi luôn khuyên bạn nên sử dụng CMake (hoặc một trình tạo hệ thống khác, nhưng CMake là sở thích cá nhân của tôi) nếu bạn dự định dự án của bạn có nhiều nền tảng hoặc có thể sử dụng rộng rãi. Bản thân CMake cũng cung cấp một số tính năng đẹp như phát hiện phụ thuộc, quản lý giao diện thư viện hoặc tích hợp với CTest, CDash và CPack.

Sử dụng trình tạo bộ tạo hệ thống để giúp dự án của bạn có khả năng tương lai hơn. Ngay cả khi bạn là GNU-Make-only, nếu sau này bạn quyết định mở rộng sang các nền tảng khác (có thể là Windows hay cái gì đó được nhúng), hoặc chỉ muốn sử dụng một IDE?

+0

cảm ơn bạn! Chỉ cần để xác nhận, rằng nếu tôi chỉ lập trình trên môi trường Linux hơn là chỉ makefile là đủ nhưng nếu tôi muốn chương trình từ Linux chạy trong Mac hơn cmake là lựa chọn tốt hơn khi tôi hiểu điều đó, chúng ta không cần tạo một makefile mới Mac mà chỉ cần chạy cmake. Đó có phải là toàn bộ vấn đề? – rish

+3

@ rish Vâng, đó là ý chính. Tuy nhiên, lưu ý rằng có nhiều cách để lập trình trên Linux hơn Makefiles - xem ví dụ: QtCreator, KDEvelop, Ninja. Đối với mỗi trong số này, đó là hoặc là "tạo một dự án và giữ nó đồng bộ với Makefile" hoặc "CMake chạy lại". Và, như câu trả lời đề cập, CMake cũng có chức năng khác, như khám phá sự phụ thuộc (ví dụ ['find_package()'] (http://www.cmake.org/cmake/help/v3.0/command/find_package.html)) hoặc hỗ trợ kiểm tra/đóng gói. – Angew

+3

Tôi đọc rằng CMake không thể tạo các tệp makefiles không đệ quy. Điều đó vẫn đúng? –

Các vấn đề liên quan