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})