Tôi đang cố gắng viết một số chương trình bằng cách sử dụng dự án OpenKinect. Tôi muốn thêm nhánh master của OpenKinect làm thư mục con vào nguồn dự án của tôi. Nhưng, nếu bạn nhìn vào CMake của OpenKinect, có quá nhiều thứ ở đó, và tôi không cần mọi thứ. Có những lựa chọn nhất định ở đó, đang được thiết lập để ON hoặc OFF, như thế này:Làm thế nào để bao gồm CMake git repo hiện có làm submodule trong dự án CMake của riêng tôi?
OPTION(BUILD_AUDIO "Build audio support" OFF)
OPTION(BUILD_REDIST_PACKAGE "Build libfreenect in a legally-redistributable manner (only affects audio)" OFF)
OPTION(BUILD_EXAMPLES "Build example programs" ON)
OPTION(BUILD_FAKENECT "Build fakenect mock library" ON)
OPTION(BUILD_C_SYNC "Build c synchronous library" ON)
OPTION(BUILD_CPP "Build C++ Library (currently header only)" ON)
OPTION(BUILD_CV "Build OpenCV wrapper" ON)
OPTION(BUILD_AS3_SERVER "Build the Actionscript 3 Server Example" OFF)
OPTION(BUILD_PYTHON "Build Python extension" ON)
IF(PROJECT_OS_LINUX)
OPTION(BUILD_CPACK "Build an RPM or DEB using CPack" ON)
ENDIF(PROJECT_OS_LINUX)
Nếu không thực hiện bất kỳ thay đổi lớn cho các tập tin OpenKinect (vì vậy mà tôi có thể git pull
bất cứ lúc nào tôi cần phải), làm cách nào để chỉ nhập một số phần (ví dụ: C++ wrapper
và OpenCV bindings
) vào dự án CMake của riêng tôi? Tôi đã nghĩ đến việc sao chép các thư mục nhất định, không phụ thuộc vào các thư mục khác, nếu tôi viết lại hoàn toàn các tệp CMake. Tôi sẽ không thể sử dụng git nữa, nhưng nó sẽ là một sửa chữa nhanh chóng. Nhưng tôi nhận được lỗi lạ theo cách đó, chẳng hạn như "stdexcept không được khai báo trong phạm vi này", điều này không có ý nghĩa, bởi vì nó là một thư viện gC++ chuẩn.
Tại sao không phải là "ngã ba" OpenKinect và giữ các thay đổi của bạn trong một chi nhánh riêng biệt. Bằng cách đó bạn có thể giữ "kéo" trong các bản cập nhật từ git-OpenKinect, trong khi vẫn giữ "các sửa đổi" của bạn trên một nhánh riêng biệt. Sau đó, bạn có thể làm những gì Johannes S gợi ý. –