- CMake 最低版本号要求
- 项目信息
- 版本号
- 版本
- -Wno-uninitialized -Wno-unused-variable -Wno-unused-but-set-variable -Wno-sign-compare -Wno-pointer-sign
- 这种写法的好处是,不会覆盖CMAKE_CXX_FLAGS本来的信息。只是把需要添加的内容添加进去。
- set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11 -lstdc++”)
- set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fpermissive -std=c++0x”)
- set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} -O0 -ggdb3 -Werror -Wfatal-errors”)
- set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} -O0 -ggdb3”)
- set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} -O0 -ggdb3 -Werror -Wfatal-errors”)
- set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} -O0 -ggdb3”)
- 打印环境变量信息
- linux环境
- UT/ST代码覆盖率编译 默认该项不开启
- 设置可执行文件输出路径
- 设置库文件输出路径
- 设置公共头文件路径
- 设置device windows工程路径
- 宏定义
- add_definitions(-D_PRE_PC_LINT)
- 配置头文件,传递CMake设置
- configure_file(“${PROJECT_SOURCE_DIR}/wifi_ut_config.h.in” “${PROJECT_BINARY_DIR}/wifi_ut_config.h”)
- 源文件路径
- linux测试工程路径
- googletest-master路径
- mockcpp路径
- host源代码路径
- device源代码路径
- set(HI1152_WIFI_DEVICE_DIR “../../../../../device/wifi/1152/“)
- public源代码路径
- include
- prj源代码路径
- service头文件路径
- set(LDFLAGS “${LDFLAGS} -m32 -m elf_i386 -L ${HI1152_WIFI_PRJ}/autostar_linux/lib -ldtcenter”)
- set(LDFLAGS “${LDFLAGS} -m64 -m elf32_x86_64 -L ${WIFI_TEST_PROJECT_DIR}/lib -lsecurec -lmockcpp”)
- DTcenter
- DTCenter入口路径
- DTCenter头文件路径
- 打印路径信息
- 添加头文件路径
- include_directories(“${WIFI_MAIN_PUBLIC}/wifi/resource”)
- 添加测试代码
- 指定生成目标
- 添加依赖库
- 添加链接库
- python 目录的执行方式 — main.py 文件
pygal的value模式:
value_list = list(
{
'value' : xxx,
'label' : xxx
} for List Comprehensions
)
pie.add('{}'.format(xxx), values=value_list)
CMake ```makefile UT CMakeList
UT
CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
set(CMAKE_C_COMPILER “/usr/bin/gcc”)
set(CMAKE_CXX_COMPILER “/usr/bin/g++”)
项目信息
project(test)
版本号
set(test_VERSION_MAJOR 1)
set(test_VERSION_MINOR 0)
版本
set(CMAKE_BUILD_TYPE Debug)
option(CMAKE_ENABLE_FSANITIZE “This is a default option for valgrind” OFF)
set(CMAKE_ENABLE_FSANITIZE $ENV{ENABLE_FSANITIZE})
if (${CMAKE_ENABLE_FSANITIZE} STREQUAL “origin”)
set(COMM_C_FLAGS “-O0 -ggdb3 -Wall -Werror”)
else()
set(COMM_C_FLAGS “-O0 -ggdb3 -fsanitize=address -fno-omit-frame-pointer -static-libasan -fstack-protector-all -Wall -Werror”)
endif()
set(COMM_C_FLAGS “${COMM_C_FLAGS}”)
-Wno-uninitialized -Wno-unused-variable -Wno-unused-but-set-variable -Wno-sign-compare -Wno-pointer-sign
if(CMAKE_COMPILER_IS_GNUCXX)
这种写法的好处是,不会覆盖CMAKE_CXX_FLAGS本来的信息。只是把需要添加的内容添加进去。
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11 -lstdc++”)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fpermissive -std=c++0x”)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -m32 -lstdc++ -DAUTOSTAR_LINUX -DDT_COMPILE_GCC -D_GLIBCXX_USE_CXX11_ABI=0”)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fpermissive -D_GLIBCXX_USE_CXX11_ABI=0”)
set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} -O0 -ggdb3 -Werror -Wfatal-errors”)
set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} -O0 -ggdb3”)
set(CMAKE_CXX_FLAGS_DEBUG “$ENV{CXXFLAGS} ${COMM_C_FLAGS} -Wfatal-errors”)
message(STATUS “optional:-std=c++11”)
endif(CMAKE_COMPILER_IS_GNUCXX)
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS “${CMAKE_C_FLAGS} -m32 -lstdc++ -DAUTOSTAR_LINUX -DDT_COMPILE_GCC -D_GLIBCXX_USE_CXX11_ABI=0”)
set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} -O0 -ggdb3 -Werror -Wfatal-errors”)
set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} -O0 -ggdb3”)
set(CMAKE_C_FLAGS_DEBUG “$ENV{CFLAGS} ${COMM_C_FLAGS} -Wfatal-errors”)
endif(CMAKE_COMPILER_IS_GNUCC)
if(CMAKE_BUILD_TYPE)
MESSAGE(STATUS “Wifi_1152 debug version”)
else()
MESSAGE(STATUS “Wifi_1152 release version”)
endif(CMAKE_BUILD_TYPE)
MESSAGE(STATUS “Top CMakeLists.txt source dir:” ${PROJECT_SOURCE_DIR})
MESSAGE(STATUS “Top CMakeLists.txt binary dir:” ${PROJECT_BINARY_DIR})
打印环境变量信息
MESSAGE(STATUS “CMAKE_CURRENT_LIST_DIR:” ${CMAKE_CURRENT_LIST_DIR})
MESSAGE(STATUS “CMAKE_CURRENT_SOURCE_DIR:” ${CMAKE_CURRENT_SOURCE_DIR})
linux环境
if(CMAKE_HOST_SYSTEM_NAME MATCHES Linux*)
MESSAGE(STATUS “Current OS environment is Linux.”)
else()
MESSAGE(FATAL_ERROR “OS environment is ERROR!”)
endif()
UT/ST代码覆盖率编译 默认该项不开启
option(CMAKE_ENABLE_GCOV “This is a default option for CMAKE_ENABLE_GCOV” OFF)
set(CMAKE_ENABLE_GCOV $ENV{ENABLE_GCOV})
MESSAGE(STATUS “CMAKE ENABLE_GCOV:” ${CMAKE_ENABLE_GCOV})
if (${CMAKE_ENABLE_GCOV} STREQUAL “gcov”)
MESSAGE(STATUS “ENV ENABLE_GCOV:” $ENV{ENABLE_GCOV})
add_definitions(-fprofile-arcs)
add_definitions(-ftest-coverage)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage”)
set(CMAKE_C_FLAGS “${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage”)
set(CMAKE_C_LINK_FLAGS “${CMAKE_LINKER_FLAGS} -fprofile-arcs -lgcov”)
set(CMAKE_CXX_LINK_FLAGS “${CMAKE_LINKER_FLAGS} -fprofile-arcs -lgcov”)
endif()
set(ST_BIN_TARGET_NAME wifi_device_ut.bin)
设置可执行文件输出路径
SET(EXECUTABLE_OUTPUT_PATH “./../output”)
设置库文件输出路径
SET(LIBRARY_OUTPUT_PATH “./../output”)
设置公共头文件路径
SET(LLT_COMMON_115X “../../../../common/wifi/ut/alg/115x_ut”)
SET(LLT_COMMON_COM_UT “../../../../common/wifi/ut/alg/com_ut”)
设置device windows工程路径
SET(WIFI_WINDOWS_DEVICE_UT “../../hi1152v100device_ut”)
option(_PRE_IO_PRINT “marco” ON)
宏定义
add_definitions(-DWIN32)
add_definitions(-D_PRE_WCPU)
add_definitions(-D_PRE_HI1152_LINUX_UT)
add_definitions(-D_PRE_MULTI_CORE_MODE_SMP=0)
add_definitions(-D_PRE_MULTI_CORE_MODE_PIPELINE_AMP=1)
add_definitions(-D_PRE_MULTI_CORE_MODE_OFFLOAD_HMAC=2)
add_definitions(-D_PRE_MULTI_CORE_MODE_OFFLOAD_DMAC=3)
add_definitions(-D_PRE_MULTI_CORE_MODE=_PRE_MULTI_CORE_MODE_OFFLOAD_DMAC)
add_definitions(-D_PRE_PC_LINT)
#
配置头文件,传递CMake设置
configure_file(“${PROJECT_SOURCE_DIR}/wifi_ut_config.h.in” “${PROJECT_BINARY_DIR}/wifi_ut_config.h”)
源文件路径
set(WIFI_HOST_DIR .)
linux测试工程路径
set(WIFI_TEST_PROJECT_DIR “..”)
googletest-master路径
set(GOOGLE_TEST_DIR “../../../../tools/googletest-master”)
mockcpp路径
set(MOCKCPP_TEST_DIR “../../../../tools/godsme-mockcpp”)
host源代码路径
set(HI1152_WIFI_DEVICE_DIR “../../../../../device”)
set(HI1152_WIFI_DRIVER_DIR “../../../../../driver”)
device源代码路径
set(HI1152_WIFI_DEVICE_DIR “../../../../../device/wifi/1152/“)
public源代码路径
include
set(HI1152_WIFI_PUBLIC_DIR “../../../../../public”)
prj源代码路径
set(HI1152_WIFI_PRJ “../../../../prj”)
service头文件路径
set(HI1152_WIFI_SERVICE “../../../../../services/gateway_service”)
set(LDFLAGS “${LDFLAGS} -m32 -m elf_i386 -L ${HI1152_WIFI_PRJ}/autostar_linux/lib -ldtcenter”)
set(LDFLAGS “${LDFLAGS} -m64 -m elf32_x86_64 -L ${WIFI_TEST_PROJECT_DIR}/lib -lsecurec -lmockcpp”)
DTcenter
set(DT_PATH “../../../../tools/DTCenter”)
DTCenter入口路径
set(DT_LIB_PATH “${DT_PATH}/lib”)
DTCenter头文件路径
set(DT_INCLUDE_PATH “${DT_PATH}/include”)
include_directories(“${DT_INCLUDE_PATH}/DMT”)
include_directories(“${DT_INCLUDE_PATH}”)
include_directories(“${DT_INCLUDE_PATH}/AMock”)
include_directories(“${DT_INCLUDE_PATH}/Common”)
打印路径信息
MESSAGE(STATUS “WIFI_TEST_PROJECT_DIR:” ${WIFI_TEST_PROJECT_DIR})
MESSAGE(STATUS “GOOGLE_TEST_DIR:” ${GOOGLE_TEST_DIR})
MESSAGE(STATUS “MOCKCPP_TEST_DIR:” ${MOCKCPP_TEST_DIR})
MESSAGE(STATUS “HI1152_WIFI_HOST_DIR:” ${HI1152_WIFI_HOST_DIR})
MESSAGE(STATUS “HI1152_WIFI_HSIMU:” ${HI1152_WIFI_HSIMU})
添加头文件路径
include_directories(“./“)
include_directories(“./..”)
include_directories(“./../../hi1153v100device_ut_linux/include”)
include_directories(“./../../hi1153v100device_ut_linux/include/linux_ut”)
include_directories(“${WIFI_MAIN_PUBLIC}/wifi/resource”)
include_directories(“./../include/public/include”)
include_directories(“./../testcase”)
include_directories(“./../builder”)
include_directories(“${WIFI_WINDOWS_DEVICE_UT}/testcase/driver/wifi/main”)
include_directories(“${WIFI_WINDOWS_DEVICE_UT}/testcase/driver/wifi/comm”)
include_directories(“${HI1152_WIFI_PRJ}/autostar/include”)
include_directories(“${HI1152_WIFI_DEVICE_DIR}/bootloader/1152”)
include_directories(“${HI1152_WIFI_DEVICE_DIR}/platform/ip/uart_pl011”)
include_directories(“${HI1152_WIFI_DEVICE_DIR}/platform/ip/pcie”)
#
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PRJ}/hsimu/hsimu_reg.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_bus_if.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_fsm.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_main.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_DEVICE_DIR}/platform/oal/oal_mem.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_config.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_msg.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_queue.c)
list(APPEND WIFI_DEVICE_CODE_DIR_SRCS ${HI1152_WIFI_PUBLIC_DIR}/platform/hcc/hcc_thread.c)
添加测试代码
指定生成目标
list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_TEST_PROJECT_DIR}/main_ut_prj.cpp)
list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_TEST_PROJECT_DIR}/platformutstub.c)
list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_TEST_PROJECT_DIR}/testcase/TestsuiteBase.cpp)
list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_WINDOWS_DEVICE_UT}/testcase/driver/wifi/comm/ut_comm.cpp)
list(APPEND WIFI_DEVICE_UT_FILE_SRCS ${WIFI_WINDOWS_DEVICE_UT}/testcase/platform/oal/ut_oal_device_mem_test.cpp)
添加依赖库
set(EXTRA_LIBS_UT ${EXTRA_LIBS_UT} dl pthread)
MESSAGE(STATUS “EXTRA_LIBS_UT:${EXTRA_LIBS_UT}”)
添加链接库
find_library(LIB_DT_CENTER libdtcenter.a ${DT_LIB_PATH})
find_library(LIB_GTEST libdtcenter.a ${DT_LIB_PATH})
MESSAGE(STATUS “LIB_GTESTMAIN:${DT_LIB_PATH}”)
target_link_libraries(${ST_BIN_TARGET_NAME} ${LIB_GTEST} ${EXTRA_LIBS_UT} ${LIB_DT_CENTER}) ```