首页 > 其他 > 详细

git submodule 与cmake(以Gflags glog为例)

时间:2021-01-26 15:35:39      阅读:10      评论:0      收藏:0      [点我收藏+]
  • 为当前项目添加submodule  (以Gflags glog为例)
git submodule add http://172.16.10.13/source_dir/gflags submodules/gflags
git submodule add http://172.16.10.13/source_dir/glog submodules/glog
  • 首次clone 项目后,同步submodule
git submodule update --init --recursive
  • 项目cmake配置submodule
    •   源项目cmake
cmake_minimum_required (VERSION 2.8)

if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
    message(FATAL_ERROR "
    FATAL: In-source builds are not allowed.
           You should create a separate directory for build files.
           ")
endif()

project (test_pro)
aux_source_directory(src DIR_SRCS)
add_executable(test_pro ${DIR_SRCS})
#target_link_libraries(test_pro)
    •   添加submodule后cmake
cmake_minimum_required (VERSION 2.8)

if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
    message(FATAL_ERROR "
    FATAL: In-source builds are not allowed.
           You should create a separate directory for build files.
           ")
endif()

project (test_pro)
aux_source_directory(src DIR_SRCS)

### LOCALCMAKE_TOOLCHAIN 编译平台选择 例如:cmake -DLOCALCMAKE_TOOLCHAIN:STRING=1804 .. ### 设置submodule编译输出的位置
set(CMAKE_BUILD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/bld_${LOCALCMAKE_TOOLCHAIN}) #Glog Gflags 静态库位置 set(GLOG_LIBRARY ${CMAKE_BUILD_DIR}/glog/lib/libglog.a ) set(GFLAGS_LIBRARY ${CMAKE_BUILD_DIR}/gflags/lib/libgflags.a ) #Glog 自动化编译 add_dependencies(test_pro Glog) add_custom_command( WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/submodules/glog/build.static OUTPUT ${CMAKE_BUILD_DIR}/glog/include OUTPUT ${CMAKE_BUILD_DIR}/glog/lib/libglog.a COMMAND rm CMake* cmake* Makefile -rf COMMAND cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_BUILD_DIR}/glog -DCMAKE_PREFIX_PATH=${CMAKE_BUILD_DIR}/gflags/ .. COMMAND make -j$(nproc) COMMAND make install) #Glog make install 安装输出文件 add_custom_target(Glog DEPENDS ${CMAKE_BUILD_DIR}/gflags/lib/libgflags.a DEPENDS ${CMAKE_BUILD_DIR}/glog/include DEPENDS ${CMAKE_BUILD_DIR}/glog/lib/libglog.a ) #Gflags 自动化编译 add_dependencies(test_pro Gflags) add_custom_command( WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/submodules/gflags/build.static OUTPUT ${CMAKE_BUILD_DIR}/gflags/include OUTPUT ${CMAKE_BUILD_DIR}/gflags/lib/libgflags.a COMMAND rm CMake* cmake* Makefile -rf COMMAND cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_BUILD_DIR}/gflags -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} .. COMMAND make -j$(nproc) COMMAND make install) #Gflags make install 安装输出文件 add_custom_target(Gflags DEPENDS ${CMAKE_BUILD_DIR}/gflags/include DEPENDS ${CMAKE_BUILD_DIR}/gflags/lib/libgflags.a ) add_executable(test_pro ${DIR_SRCS}) #项目对Glog Gflags的依赖 target_link_libraries(test_pro ${GLOG_LIBRARY} ${GFLAGS_LIBRARY})

 

git submodule 与cmake(以Gflags glog为例)

原文:https://www.cnblogs.com/rayfloyd/p/14329917.html

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号