第三方库使用 CMake,集成到项目中构建

第三方库未使用 CMake,集成到项目中构建

以集成 github.com/antirez/sds 库为例:

  1. include(FetchContent)
  2. FetchContent_Declare(
  3. sds
  4. GIT_REPOSITORY https://github.com/antirez/sds
  5. GIT_TAG master
  6. GIT_SHALLOW true
  7. )
  8. if(NOT sds_POPULATED)
  9. message(NOTICE "-- Download github.com/antirez/sds ing ...")
  10. FetchContent_Populate(sds)
  11. message(NOTICE "-- Download github.com/antirez/sds complete!")
  12. message(NOTICE "-- Build github.com/antirez/sds ing ...")
  13. execute_process(
  14. COMMAND bash "-c" "cc -c sds.c sds.h sdsalloc.h && ar rc libsds.a sds.o"
  15. WORKING_DIRECTORY ${sds_SOURCE_DIR}
  16. RESULT_VARIABLE sds_RESULT
  17. )
  18. message(NOTICE "-- Build github.com/antirez/sds complete! Result code: ${sds_RESULT}")
  19. endif()
  20. add_library(sds STATIC IMPORTED)
  21. set_target_properties(sds PROPERTIES
  22. IMPORTED_LOCATION ${sds_SOURCE_DIR}/libsds.a
  23. INTERFACE_INCLUDE_DIRECTORIES ${sds_SOURCE_DIR}/
  24. )

第三方库使用 CMake,在项目外部构建

第三方库未使用 CMake,在项目外部构建