2011-11-18 38 views
7

Tôi đang chuyển đổi dự án C++ được tạo bằng Visual Studio 2005 thành CMake và đã vấp phải một chút vấn đề với các tệp tài nguyên được bao gồm trong dự án.Các tệp tài nguyên của CMake và Visual Studio

Dự án bao gồm tệp .rc, một loạt các tệp .ico và tệp .rc2.

Tệp thông thường .rc hoạt động tốt trong dự án được tạo và sử dụng trình biên dịch tài nguyên. Tuy nhiên, các tệp .ico.rc2 đang gây ra sự cố khi chúng được đưa vào, vì trong dự án được tạo, Visual Studio cố gắng biên dịch chúng bằng trình biên dịch C/C++.

Tôi giả định rằng các tệp này được bao gồm trong tệp .rc, vì vậy có thể sẽ không hoạt động trong tệp CMakeLists.txt, nhưng vì rõ ràng là có thể liệt kê chúng trong dự án (chúng hiển thị trong dự án ban đầu) Tôi muốn làm như vậy, để người dùng của dự án được tạo ra có thể thấy rằng các tệp này đang được sử dụng.

Cách chính xác để xử lý các tệp tài nguyên VS bổ sung này trong CMake là gì?

+0

Tôi không biết CMake, nhưng bạn đúng về cách sử dụng các tệp tài nguyên. Nếu bạn muốn có chúng trong tệp CMakeLists.txt, bạn phải đặt chúng vào một số mục tiêu sẽ không được xây dựng, phải là một cái gì đó trong tài liệu. –

+0

@JoachimPileborg: Cảm ơn thông tin. Vâng, vấn đề là tôi không biết CMake hoặc và tôi đã không tìm thấy bất cứ điều gì trong các tài liệu có vẻ liên quan ... :) – villintehaspam

+0

Tìm thấy điều này trong một số báo cáo lỗi về MinGW, mặc dù có vẻ như nó sẽ hoạt động? "Khi ai đó trên IRC gợi ý tôi đã thêm tệp resource.h/resource.rc vào danh sách nguồn dự án add_executable()." –

Trả lời

2

Hãy thử set_source_files_properties(your.ico your.rc2 PROPERTIES LANGUAGE RC).

1

Theo mặc định, không nên làm bất kỳ điều gì với các tệp đó. Thuộc tính tệp nguồn LANGUAGE phải trống và do đó tác vụ cho tệp phải được kiểm tra theo loại tệp. Mà không phải là bất cứ điều gì vì nó không phải là một cái gì đó nó nên biên dịch.

Kiểm tra CMakeLists.txt của bạn không chứa lệnh set_source_files_properties sẽ gây rối với thuộc tính đó.

Nếu bạn muốn làm điều gì đó với các tập tin, đây là hai cách để thực hiện điều:

Với add_custom_target bạn có thể thêm chúng và chạy tùy chỉnh lệnh cho họ khi bạn xây dựng dự án. Cấp rằng các tập tin đã thay đổi.

Với configure_file bạn có thể dễ dàng sao chép chúng vào thư mục xây dựng nếu cần. Với cờ COPYONLY.

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