Tôi đang bận chuyển quá trình xây dựng từ msbuild sang cmake, để có thể xử lý gcc toolchain tốt hơn (tạo mã nhanh hơn cho một số công cụ số mà tôi đang làm) .cmake: Làm việc với nhiều cấu hình đầu ra
Bây giờ, tôi muốn cmake tạo ra một số phiên bản đầu ra, các công cụ như một phiên bản với sse2, một phiên bản khác có x64, v.v. Tuy nhiên, cmake dường như làm việc tự nhiên nhất nếu bạn chỉ đơn giản là có một loạt các cờ (nói "sse2_enable", và "platform") và sau đó tạo ra một đầu ra dựa trên các nền tảng đó.
Cách tốt nhất để làm việc với nhiều cấu hình đầu ra như thế này là gì? Trực giác, tôi muốn lặp qua một số lượng lớn các kết hợp cờ và chạy lại các tệp CMakeLists.txt giống nhau cho mỗi kết hợp - nhưng tất nhiên, bạn không thể biểu thị rằng trong các tệp CMakeLists.txt (AFAIK).
Tuy nhiên, có một số vấn đề với cách tiếp cận đó. Trước hết, nó đòi hỏi nhiều invocations để cmake & làm cho ít được, nhưng nó giới thiệu một phức tạp thêm: cmake là * cross-nền tảng *, nhưng shell scripting là không. Thứ hai, nó làm chậm mọi thứ xuống một chút; thông thường, bạn có thể sử dụng make -j để xây dựng tất cả các kết hợp khác nhau theo cách đa luồng độc đáo, nhưng với cách tiếp cận nhiều cmake bạn cần phải song song theo cách thủ công (và chấp nhận sử dụng mem cao hơn và tải và chậm lại vì các trường hợp riêng biệt của make không hợp tác). Ưu điểm là nó có thể xử lý các xung đột tên. –
Một nhược điểm khác: trường hợp sử dụng thứ cấp mà tôi có trong đầu là nhiều bản dựng cho CPU khác nhau, và sau đó chọn cái tốt nhất trong thời gian chạy - và sau đó thực sự cần kết quả cuối cùng phụ thuộc vào nhiều bản dựng của cùng một phụ -dự án. –
Nhưng dù sao, đó là lý do tại sao tôi chọn giải pháp khác - nhưng bạn chắc chắn là kinh điển hơn và hoạt động (với những nhược điểm nói trên) nói chung hơn - cảm ơn vì đã đóng góp! –