配置工程及引入测试--针对C++
书写CMakeList同时支持windows、Linux、Mac,将头文件,三方库,源文件,测试代码目录进行分离
使用CMAKE区分Debug版本和Release版本;工程中同时生成动态库和测试用例;动态库方便日后的调用,测试用例用来检查程序的正确性
C++这一块使用 googleTest作为测试工具
对应的CMakeList如下
cmake_minimum_required(VERSION 3.0) project(DS) set(CMAKE_CXX_STANDARD 14) set(GOOGLETEST_VERSION 1.9.0) #判断系统环境 if (CMAKE_HOST_WIN32) set(win 1) elseif (CMAKE_HOST_APPLE) set(MACOS 1) elseif (CMAKE_HOST_UNIX) set(LINUX 1) endif () set(CMAKE_CXX_STANDARD 17) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(win) set(CMAKE_PREFIX_PATH C:\\Qt\\Qt5.14.2\\5.14.2\\msvc2017_64) elseif(MACOS) #set(CMAKE_PREFIX_PATH /home/bitcraze/Qt5.14.2/5.14.2/gcc_64) #set(CMAKE_PREFIX_PATH /opt/Qt5.14.2/5.14.2/gcc_64) # set(CMAKE_PREFIX_PATH /home/liujg/Qt5.14.2/5.14.2/gcc_64) set(CMAKE_PREFIX_PATH /Users/liujg/Qt5.14.2/5.14.2/clang_64) else() set(CMAKE_PREFIX_PATH /opt/Qt5.14.2/5.14.2/gcc_64) endif() find_package(Qt5 COMPONENTS Core REQUIRED ) add_subdirectory(external/googletest) include_directories(include external/googletest/include) aux_source_directory(src DIR_SRC) aux_source_directory(test DIR_TEST) #加载所有的.h头文件 #file(GLOB_RECURSE DIR_INC_H include/*.h) set(mode "CMAKE_BUILD_TYPE") if (CMAKE_HOST_WIN32) add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") endif() #生成动态库 if(${mode} AND (CMAKE_BUILD_TYPE STREQUAL "Debug")) # 修改点 add_library(libDS-d SHARED ${DIR_SRC} ${DIR_INC_H} ) target_link_libraries(libDS-d Qt5::Core ) elseif(${mode} AND (CMAKE_BUILD_TYPE STREQUAL "Release")) # 修改点 add_library(libDS SHARED ${DIR_SRC} ${DIR_INC_H} ) target_link_libraries(libDS Qt5::Core ) endif() #生成测试程序 if(${mode} AND (CMAKE_BUILD_TYPE STREQUAL "Debug")) add_executable(MyDS-d-test ${DIR_SRC} ${DIR_TEST} ${DIR_INC_H} external/googletest) target_link_libraries(MyDS-d-test Qt5::Core gtest_main ) elseif(${mode} AND (CMAKE_BUILD_TYPE STREQUAL "Release")) add_executable(MyDS-test ${DIR_SRC} ${DIR_TEST} ${DIR_INC_H} external/googletest) target_link_libraries(MyDS-test Qt5::Core gtest_main ) endif()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix