Tôi đã tìm cách sử dụng protobuf v2 với cmake trên Windows và xây dựng nó với cài đặt dự án của bạn. Vui lòng thử xem cmake-external-packages project và protobuf-v2 CMakeLists để thực hiện công việc. Trong thực tế, tôi đã viết nó bởi vì ExternalProject_Add
là sai (vì các công cụ trong giai đoạn xây dựng thay vì giai đoạn thế hệ).
CMakeLists.txt này sẽ tải xuống protobuf từ protobuf's github releases, trích xuất và phát ra các mục tiêu cmake mà bạn nên thêm tham chiếu đến với target_link_libraries
.
Sử dụng git-subtree, git-submodule hoặc chỉ sao chép nội dung kho lưu trữ này vào thư mục con của kho lưu trữ của bạn.
Sau đó, thêm các gói bạn muốn sử dụng với add_subdiretory
. Đối với protobuf, sử dụng:
add_subdirectory(path/to/cmake-external-packages/protobuf-v2)
Bao gồm của Protobuf sẽ được sao chép vào thư mục path/to/cmake-external-packages/include
. Bạn có thể tùy chỉnh vị trí của nó trong CMakeLists cấp cao nhất của bạn:
set (EXTERNAL_PACKAGES_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/third-party/include
CACHE STRING "Directory for third-party include files, where include folders will be copied")
include_directories(${EXTERNAL_PACKAGES_INCLUDE_DIR})
Chỉ cần tham khảo protobuf cho thực thi của bạn:
add_executable(your_exe ${your_exe_sources})
target_link_libraries(your_exe libprotobuf libprotobuf-lite libprotoc)
Hope this helps.
Cảm ơn, tôi đã phát hiện ra rằng find_library cũng tìm kiếm CMAKE_INCLUDE_PATH, CMAKE_INCLUDE_PATH và CMAKE_LIBRARY_PATH. –