googletest Cmake脚本


主目录CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(CppTest)

set(CMAKE_CXX_STANDARD 14)
include("D:/platform/gtest.cmake")
include("D:/platform/securec.cmake")

include_directories(${PROJECT_SOURCE_DIR}/include)
add_compile_options(-Wall)

set(TARGET_OBJ_SRC_PATH
        ${PROJECT_SOURCE_DIR}/src
        ${PROJECT_SOURCE_DIR}/comm
        ${PROJECT_SOURCE_DIR}/design)

include_directories( ${TARGET_OBJ_SRC_PATH})

#扫描源文件
function(glob_all_source_files DIR_LIST)
    foreach(dir ${DIR_LIST})
        ## GLOB_RECURSE 会搜索子目录  GLOB 搜索当前目录
        file(GLOB SRC_C_LIST "${dir}/*.c")
        file(GLOB SRC_CXX_LIST "${dir}/*.cpp")
        list(APPEND FILE_LIST ${SRC_C_LIST} ${SRC_CXX_LIST})
    endforeach()
    set(TRAGET_OBJ_SRC_LIST ${FILE_LIST} PARENT_SCOPE)
endfunction()

#调用函数
glob_all_source_files("${TARGET_OBJ_SRC_PATH}")
#添加到动态库
add_library(CppTestObj OBJECT ${TRAGET_OBJ_SRC_LIST})

add_executable(CppTest main.cpp)

target_link_libraries(CppTest CppTestObj)

gtest.cmake

#gtest
set(PLATFORM_PATH "D:/platform")
set(LLT_GTEST_LIBS
        ${PLATFORM_PATH}/gtest/lib/libgmock_maind.a
        ${PLATFORM_PATH}/gtest/lib/libgmockd.a
        ${PLATFORM_PATH}/gtest/lib/libgtest_maind.a
        ${PLATFORM_PATH}/gtest/lib/libgtestd.a)
        
link_libraries(${LLT_GTEST_LIBS})
        
set(LLT_GTEST_INC
        ${PLATFORM_PATH}/gtest/include
        ${PLATFORM_PATH}/gtest/include/gmock
        ${PLATFORM_PATH}/gtest/include/gtest)
include_directories(${LLT_GTEST_INC})
        
        

gtestbuild.cmake

set(PLATFORM_PATH "D:/platform")

set(GOOGLETEST_VERSION 3.15)
set(PATH_GTEST_MAIN ${PLATFORM_PATH}/googletest/googletest)
set(PATH_GTEST_MOCK ${PLATFORM_PATH}/googletest/googlemock)

set(PATH_GTEST_INC_LIST
        ${PATH_GTEST_MAIN}/include
        ${PATH_GTEST_MAIN}/include/gtest
        ${PATH_GTEST_MOCK}/include
        ${PATH_GTEST_MOCK}/include/gmock)

include_directories(${PATH_GTEST_INC_LIST})
add_subdirectory(${PATH_GTEST_MOCK})
link_directories(${PATH_GTEST_MOCK})
set(gtestlibs gtest gmock)


##add_executable(MyPractices ${SRC_LIST_ALL})
#放在add_executable之后
##target_link_libraries(MyPractices  ${gtestlibs})

securec.cmake

#securec
set(PLATFORM_PATH "D:/platform")
set(PATH_SECUREC_LIBS ${PLATFORM_PATH}/securec/libs)
set(PATH_SECUREC_INC ${PLATFORM_PATH}/securec/inc)
set(SECUREC_LIBS
        ${PATH_SECUREC_LIBS}/libdopra.a
        ${PATH_SECUREC_LIBS}/libsecurec.a)
        
include_directories(${PATH_SECUREC_INC})
link_libraries(${SECUREC_LIBS})