詳細代碼:html
cmake_minimum_required(VERSION 3.8) project(work) message("------------ Options -------------") message(" CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") message(" CMAKE_BUILD_TYPE: Hello World!") # 編譯google test,會在當前目錄生成libtest.a靜態庫 add_subdirectory(./googletest) #頭文件 include_directories(${PROJECT_SOURCE_DIR}/src/include ./googletest/include) #源文件 aux_source_directory(${PROJECT_SOURCE_DIR}/src/main dir_srcs) #庫文件 : libtest.a 添加到連接路徑中 link_directories(${PROJECT_SOURCE_DIR}/lib ${PROJECT_SOURCE_DIR}/googletest) #須要添加googletest運行須要的pthread set(LIBRARIES pthread) #編譯器相關設置 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_COMPILER "clang++" ) # 顯示指定使用的C++編譯器 set(CMAKE_CXX_FLAGS "-g") # 調試信息 set(CMAKE_CXX_FLAGS "-Wall") # 開啓全部警告 set(WORK ${dir_srcs}) add_custom_target(cmake-build-debug) add_executable(${PROJECT_NAME} ${WORK}) target_link_libraries(${PROJECT_NAME} gtest)
思路:平常使用中,建議把這些代碼放置到每一個實現函數文件中,而後經過宏去控制!ios
一、公共文件common.hgit
代碼以下:github
// // Created by Zhou,Baochuan on 18/5/25. // #ifndef WORK_COMMON_H #define WORK_COMMON_H #include <iostream> #include <string> #define ENV_DEBUG #ifdef ENV_DEBUG #include <gtest/gtest.h> #endif using namespace std; #endif //WORK_COMMON_H
二、實現文件,如字符串工具類:string_util.cppbash
代碼以下:框架
// // Created by Zhou,Baochuan on 18/5/25. // #include <iostream> #include "string_util.h" using namespace work; using namespace std; string StringUtil::ltrim(string str) { string chars = "\t\n\v\f\r "; str.erase(0, str.find_first_not_of(chars)); return str; } string StringUtil::rtrim(string str) { string chars = "\t\n\v\f\r "; str.erase(str.find_last_not_of(chars) + 1); return str; } string StringUtil::trim(string str) { return ltrim(rtrim(str)); } #ifdef ENV_DEBUG TEST(string_util, trim) { string src1 = " 空格校驗 "; string src2 = StringUtil::trim(src1); EXPECT_STREQ("空格校驗", src2.c_str()); EXPECT_STREQ("空格校驗 ", src2.c_str()); } #endif
三、入口文件函數
代碼以下:工具
#include "common.h" #include "string_util.h" using namespace work; #ifndef ENV_DEBUG int main(int argc, char** argv) { string src = " OK"; cout << StringUtil::trim(src) << endl; return 0; } #else GTEST_API_ int main(int argc, char ** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } #endif
四、上線的時候,把這個common.h文件中的定義刪除掉,如圖:post
五、運行部分樣例,如圖:測試