-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathCMakeLists.txt
125 lines (95 loc) · 4.08 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
cmake_minimum_required(VERSION 3.0)
set(CMAKE_C_STANDARD 99)
project(wb32-dfu-updater_cli VERSION 1.0.0)
if (NOT (CMAKE_BUILD_TYPE STREQUAL Release))
# Build type Debug / Release
set(CMAKE_BUILD_TYPE Debug)
# Build option
add_compile_options("-Wall")
endif()
# Add head file path.
include_directories(${CMAKE_SOURCE_DIR})
include_directories(${PROJECT_BINARY_DIR})
include_directories(${CMAKE_SOURCE_DIR}/src_common)
if (WIN32)
include_directories(${CMAKE_SOURCE_DIR}/src_windows)
endif()
# Add source file.
aux_source_directory(${CMAKE_SOURCE_DIR}/src_common SRC_FILES)
if (WIN32)
aux_source_directory(${CMAKE_SOURCE_DIR}/src_windows SRC_FILES)
endif()
include(${PROJECT_SOURCE_DIR}/cmake/compiler_conf.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/building_output.cmake)
configure_file(${PROJECT_SOURCE_DIR}/cmake/config.h.in cmake_config.h)
if (LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
# in cache already
set(LIBUSB_FOUND TRUE)
message(STATUS "LIBUSB_INCLUDE_DIRS: ${LIBUSB_INCLUDE_DIRS}")
message(STATUS "LIBUSB_LIBRARIES: ${LIBUSB_LIBRARIES}")
else (LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
find_path(LIBUSB_INCLUDE_DIR
NAMES libusb-1.0/libusb.h
DOC "libusb include directory")
set(LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0)
mark_as_advanced(LIBUSB_INCLUDE_DIR)
message(STATUS "LIBUSB_INCLUDE_DIR=${LIBUSB_INCLUDE_DIR}")
find_library(LIBUSB_LIBRARY
NAMES libusb-1.0.so libusb-1.0.dylib libusb-1.0.dll
DOC "libusb library")
mark_as_advanced(LIBUSB_LIBRARY)
message(STATUS "LIBUSB_LIBRARY=${LIBUSB_LIBRARY}")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LIBUSB REQUIRED_VARS LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR)
if ((LIBUSB_INCLUDE_DIR STREQUAL LIBUSB_INCLUDE_DIR-NOTFOUND) OR
(LIBUSB_LIBRARY STREQUAL LIBUSB_LIBRARY-NOTFOUND))
message(FATAL_ERROR "
No libusb path information is provided!
LIBUSB_INCLUDE_DIRS=???
LIBUSB_LIBRARIES=???
")
else()
set(LIBUSB_INCLUDE_DIRS ${LIBUSB_INCLUDE_DIR})
set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY})
endif()
endif (LIBUSB_INCLUDE_DIRS AND LIBUSB_LIBRARIES)
# Set execute file path.
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build/bin)
# Compile exe
add_executable(${CMAKE_PROJECT_NAME} ${SRC_FILES})
# include head file.
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${LIBUSB_INCLUDE_DIRS})
# link lib file.
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${LIBUSB_LIBRARIES})
# install configuration.
include(${PROJECT_SOURCE_DIR}/cmake/install_common.cmake)
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_DIRECTORY ${PROJECT_SOURCE_DIR}/package)
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
set(PROJECT_VERSION_FULL ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
set(CPACK_SOURCE_IGNORE_FILES
${PROJECT_SOURCE_DIR}/.DS_Store
${PROJECT_SOURCE_DIR}/.vscode
${PROJECT_SOURCE_DIR}/.git
${PROJECT_SOURCE_DIR}/*.hex
${PROJECT_SOURCE_DIR}/*.bin
${PROJECT_SOURCE_DIR}/*.exe
${PROJECT_SOURCE_DIR}/package
${PROJECT_SOURCE_DIR}/driver
${PROJECT_SOURCE_DIR}/build
${PROJECT_SOURCE_DIR}/docs
${PROJECT_SOURCE_DIR}/bin)
if(WIN32 AND NOT UNIX)
set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${CMAKE_PROJECT_NAME}")
set(CPACK_NSIS_MODIFY_PATH ON)
endif()
set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME})
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CMAKE_PROJECT_NAME})
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_FULL})
set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-v${PROJECT_VERSION_FULL}-${CMAKE_SYSTEM_NAME})
set(CPACK_PACKAGE_EXECUTABLES "${CPACK_SOURCE_PACKAGE_FILE_NAME}" "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
include(CPack)