2012-03-19 29 views
7

Tôi hiện đang làm việc để chuyển đổi qua dự án Visual C++ (có nhiều tiểu dự án bên trong nó) cho CMake.Làm việc với nhiều dự án trong CMake

Có một điều mà tôi không chắc chắn về - về cơ bản, bao gồm các tiểu dự án từ tệp CMakeLists.txt cấp cao nhất, tôi chỉ sử dụng lệnh add_subdirectory và tham khảo các thư mục mà các tiểu dự án khác nhau được lưu trữ.

Tuy nhiên, tôi có một dự án nằm trong thư mục cùng một thư mục làm tệp CMakeLists.txt cấp cao nhất của tôi và vì vậy tôi tự hỏi liệu có thể bao gồm tệp này bằng cách nào đó không? CMake không cho phép tôi gọi add_subdirectory trên PROJECT_BINARY_DIR hiện có (xem dưới đây):

add_subdirectory(${PROJECT_BINARY_DIR}) #not allowed in CMake 

Tôi không thể nghĩ ra một cách khác để tôi bao gồm tiểu dự án này vào CMake tôi xây dựng. Bất kỳ ý tưởng?

Trả lời

12

Tất cả add_subdirectory làm là thêm một thư mục con với một tệp CMakeLists.txt trong đó, và do đó sẽ không có ý nghĩa để cho phép bạn thêm thư mục hiện tại. Bạn có thể chỉ cần thêm logic CMake để xây dựng phần đó của dự án của bạn trong tệp CMakeLists.txt. Nếu bạn muốn tách logic, sau đó bạn có thể đặt nó trong build_project.cmake, và sau đó sử dụng bao gồm,

include(build_project.cmake) 

Bạn có thể bao gồm như nhiều tác phẩm CMake khác như bạn muốn, và rằng mã CMake sẽ được đánh giá như thể nó được dán nội tuyến. Vì vậy, tất cả các lệnh add_executable và tương tự bình thường sẽ hoạt động.

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