|
|
@@ -9,20 +9,15 @@
|
|
|
# mkdir build
|
|
|
# cd build
|
|
|
# cmake ..
|
|
|
-# cmake --build . --config Release
|
|
|
+# cmake --build . --config {Release|Debug}
|
|
|
#
|
|
|
# The cmake .. command looks in the parent folder for a file named
|
|
|
# CMakeLists.txt, reads it, and sets up everything needed to build program.
|
|
|
-# Also, note that CMake can generate Visual Studio or XCode project files. So
|
|
|
-# if instead you had written:
|
|
|
-# cd build
|
|
|
-# cmake .. -G Xcode
|
|
|
#
|
|
|
-# You would be able to open the resulting Xcode project and compile and edit
|
|
|
-# the example programs within the Xcode IDE. CMake can generate a lot of
|
|
|
-# different types of IDE projects. Run the cmake -h command to see a list of
|
|
|
-# arguments to -G to see what kinds of projects cmake can generate for you. It
|
|
|
-# probably includes your favorite IDE in the list.
|
|
|
+# CMake can generate a lot of different types of IDE projects. Run the cmake -h
|
|
|
+# command to see a list of arguments to -G to see what kinds of projects cmake can generate for you.
|
|
|
+# It probably includes your favorite IDE in the list.
|
|
|
+
|
|
|
cmake_minimum_required (VERSION 3.8)
|
|
|
|
|
|
project(RvcFramework)
|
|
|
@@ -30,17 +25,16 @@ project(RvcFramework)
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
|
|
option(BUILD_TESTING "Build the project test case." OFF)
|
|
|
-option(INSTALL_INCLUDE_FILES "Enable installation of include header file or third_party" ON)
|
|
|
|
|
|
set(SIMULATE_DEV_AND_TEST_TEMP ON)
|
|
|
|
|
|
-#
|
|
|
+# Include extend cmake scripts
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/addin/cmake/ )
|
|
|
include(CheckStructHasMember)
|
|
|
include(CheckIncludeFiles)
|
|
|
include(CheckSymbolExists)
|
|
|
|
|
|
-# Turn on solution folders (2.8.4+)
|
|
|
+# Turn on solution folders (2.8.4+) for Visual Studio.
|
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
|
|
set(BUILD_NUMBER 0)
|
|
|
@@ -54,6 +48,7 @@ set(RVC_AUTHOR "CCDG")
|
|
|
set(RVC_COPYRIGHT "Copyright (C) 2020")
|
|
|
set(RVC_DESCRIPTION "2020.01")
|
|
|
|
|
|
+#Set the project version
|
|
|
set(RAW_VERSION_STRING "0.0.1-dev1")
|
|
|
|
|
|
string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
|
|
|
@@ -85,13 +80,13 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
|
|
if(MSVC)
|
|
|
-set(LIB_PREFIX "")
|
|
|
-set(LIB_SUFFIX ".dll")
|
|
|
-set(ROOT_INI_NAME "root.ini.win32")
|
|
|
+ set(LIB_PREFIX "")
|
|
|
+ set(LIB_SUFFIX ".dll")
|
|
|
+ set(ROOT_INI_NAME "root.ini.win32")
|
|
|
else()
|
|
|
-set(LIB_PREFIX "lib")
|
|
|
-set(LIB_SUFFIX ".so")
|
|
|
-set(ROOT_INI_NAME "root.ini.unix")
|
|
|
+ set(LIB_PREFIX "lib")
|
|
|
+ set(LIB_SUFFIX ".so")
|
|
|
+ set(ROOT_INI_NAME "root.ini.unix")
|
|
|
endif(MSVC)
|
|
|
|
|
|
if(SIMULATE_DEV_AND_TEST_TEMP)
|
|
|
@@ -126,6 +121,9 @@ endif()
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
set(CMAKE_BUILD_TYPE "Debug")
|
|
|
endif()
|
|
|
+if(BUILD_SHARED_LIBS)
|
|
|
+ message(STATUS "Build shared libraries")
|
|
|
+endif(BUILD_SHARED_LIBS)
|
|
|
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
|
|
|
message(STATUS "debug type")
|
|
|
@@ -138,7 +136,14 @@ string(TOLOWER ${BUILD_TYPE_NAME} BUILD_TYPE_NAME_lower)
|
|
|
if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
|
|
|
if(NOT CMAKE_GENERATOR_PLATFORM)
|
|
|
message(STATUS "set win32 platform default")
|
|
|
- set(CMAKE_GENERATOR_PLATFORM "Win32")
|
|
|
+ set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
|
|
|
+ else()
|
|
|
+ message(STATUS ${CMAKE_GENERATOR_PLATFORM})
|
|
|
+ endif()
|
|
|
+elseif(${CMAKE_GENERATOR} MATCHES "Unix*")
|
|
|
+ if(NOT CMAKE_GENERATOR_PLATFORM)
|
|
|
+ message(STATUS "set unix platform default")
|
|
|
+ set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
|
|
|
else()
|
|
|
message(STATUS ${CMAKE_GENERATOR_PLATFORM})
|
|
|
endif()
|
|
|
@@ -150,15 +155,14 @@ endif()
|
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -g")
|
|
|
#endif()
|
|
|
|
|
|
-if(BUILD_SHARED_LIBS)
|
|
|
- message(STATUS "build shared libs")
|
|
|
-endif(BUILD_SHARED_LIBS)
|
|
|
+
|
|
|
|
|
|
# Configure MSVC Runtime
|
|
|
if(MSVC)
|
|
|
include(MSVCRuntime)
|
|
|
if(NOT DEFINED MSVC_RUNTIME)
|
|
|
set(MSVC_RUNTIME "dynamic")
|
|
|
+ message(STATUS "dynamic format")
|
|
|
endif()
|
|
|
set(MSVC_DYNAMIC_RUNTIME ${MSVC_RUNTIME})
|
|
|
configure_msvc_runtime()
|
|
|
@@ -196,16 +200,17 @@ else(MSVC)
|
|
|
endif(MSVC)
|
|
|
set(OUTPUT_VERSION_DIR_PATH "${OUTPUT_CUR_DISK_PATH}run\\version")
|
|
|
set(OUTPUT_CUR_VERSION_PATH "${OUTPUT_VERSION_DIR_PATH}\\${RVC_VERSION}")
|
|
|
+
|
|
|
if(NOT MSVC)
|
|
|
string(REPLACE "\\" "/" OUTPUT_VERSION_DIR_PATH ${OUTPUT_VERSION_DIR_PATH})
|
|
|
string(REPLACE "\\" "/" OUTPUT_CUR_VERSION_PATH ${OUTPUT_CUR_VERSION_PATH})
|
|
|
endif(NOT MSVC)
|
|
|
|
|
|
|
|
|
-
|
|
|
+#Config install information
|
|
|
set(PACK_INSTALL_RUN_DIR "run")
|
|
|
set(PACK_INSTALL_PREFIX_VERSION "${PACK_INSTALL_RUN_DIR}/version")
|
|
|
-set(PACK_INSTALL_PREFIX_CUR_VER "run/version/${RVC_VERSION}")
|
|
|
+set(PACK_INSTALL_PREFIX_CUR_VER "${PACK_INSTALL_PREFIX_VERSION}/${RVC_VERSION}")
|
|
|
|
|
|
set(RVC_INCLUDE_PATH "${PACK_INSTALL_PREFIX_CUR_VER}/include")
|
|
|
set(RVC_LIBRARY_PATH "${PACK_INSTALL_PREFIX_CUR_VER}/lib")
|
|
|
@@ -219,21 +224,22 @@ set(CMAKE_INSTALL_INCLUDEDIR ${RVC_INCLUDE_PATH})
|
|
|
set(CMAKE_INSTALL_LIBDIR ${RVC_LIBRARY_PATH})
|
|
|
set(CMAKE_INSTALL_BINDIR ${RVC_RUNTIME_PATH})
|
|
|
|
|
|
-macro(copy_output_on_build module_name output_subdir)
|
|
|
- set(target_name ${module_name})
|
|
|
- set(output_dir ${OUTPUT_CUR_DISK_PATH}\\${output_subdir})
|
|
|
- if(NOT EXISTS ${output_dir} OR NOT IS_DIRECTORY ${output_dir})
|
|
|
+# This macro maybe not be used now!!
|
|
|
+# macro(copy_output_on_build module_name output_subdir)
|
|
|
+# set(target_name ${module_name})
|
|
|
+# set(output_dir ${OUTPUT_CUR_DISK_PATH}\\${output_subdir})
|
|
|
+# if(NOT EXISTS ${output_dir} OR NOT IS_DIRECTORY ${output_dir})
|
|
|
# nothing to do.
|
|
|
- endif()
|
|
|
- add_custom_command(TARGET ${target_name} PRE_BUILD
|
|
|
- COMMAND ${CMAKE_COMMAND}
|
|
|
- ARGS -E make_directory ${output_dir})
|
|
|
- add_custom_command(TARGET ${target_name} POST_BUILD
|
|
|
- COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
- $<TARGET_FILE:${target_name}>
|
|
|
- ${OUTPUT_CUR_DISK_PATH}/${output_subdir}
|
|
|
- )
|
|
|
-endmacro(copy_output_on_build)
|
|
|
+# endif()
|
|
|
+# add_custom_command(TARGET ${target_name} PRE_BUILD
|
|
|
+# COMMAND ${CMAKE_COMMAND}
|
|
|
+# ARGS -E make_directory ${output_dir})
|
|
|
+# add_custom_command(TARGET ${target_name} POST_BUILD
|
|
|
+# COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
+# $<TARGET_FILE:${target_name}>
|
|
|
+# ${OUTPUT_CUR_DISK_PATH}/${output_subdir}
|
|
|
+# )
|
|
|
+#endmacro(copy_output_on_build)
|
|
|
|
|
|
set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}-${BUILD_TYPE_NAME}")
|
|
|
set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}-${BUILD_TYPE_NAME}")
|
|
|
@@ -246,9 +252,8 @@ if(WIN32)
|
|
|
set(RC_VERSION_PRODUCT ${RVC_PRODUCT})
|
|
|
set(RC_VERSION_PATCH ${BUILD_NUMBER})
|
|
|
set(RC_VERSION_DESCRIPTION "${RVC_VERSION_FULL} ${CPACK_SYSTEM_NAME}")
|
|
|
-endif(WIN32)
|
|
|
|
|
|
-if(WIN32)
|
|
|
+ #set previous definitions
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
|
|
add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)
|
|
|
@@ -320,6 +325,7 @@ if(BUILD_TESTING)
|
|
|
add_subdirectory(test)
|
|
|
endif()
|
|
|
|
|
|
+#Just copy and edit a little for output buildflags.h header file, deal it at future.
|
|
|
set(RVC_BUILD_CONFIG_LIST "")
|
|
|
GET_CMAKE_PROPERTY(res VARIABLES)
|
|
|
FOREACH(var ${res})
|
|
|
@@ -339,12 +345,11 @@ set(CMAKE_INSTALL_PREFIX "${OUTPUT_CUR_DISK_PATH}")
|
|
|
#set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
|
|
|
set(CMAKE_INSTALL_LOCAL_ONLY ON)
|
|
|
|
|
|
-#
|
|
|
+# Config package information.
|
|
|
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.gitignore;/CMakeCache.txt;/\\\\build;/\\\\out")
|
|
|
string(TOLOWER ${CMAKE_PROJECT_NAME} CMAKE_PROJECT_NAME_lower)
|
|
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${RVC_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
|
|
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${RVC_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
|
|
|
-
|
|
|
#
|
|
|
set(CPACK_PACKAGE_NAME "RvcFramework")
|
|
|
set(CPACK_PACKAGE_VENDOR "RVC-CCDG")
|
|
|
@@ -354,11 +359,7 @@ set(CPACK_PACKAGE_VERSION_MAJOR ${RVC_VERSION_MAJOR})
|
|
|
set(CPACK_PACKAGE_VERSION_MINOR ${RVC_VERSION_MINOR})
|
|
|
set(CPACK_PACKAGE_VERSION_PATCH ${RVC_VERSION_REVISION})
|
|
|
|
|
|
-#set(CPACK_COMPONENTS_ALL headers libraries symbols scripts)
|
|
|
-#TODO: to comfirm
|
|
|
-set(CPACK_COMPONENTS_ALL libraries symbols scripts)
|
|
|
-
|
|
|
-
|
|
|
+# Configure package type
|
|
|
if(MSVC)
|
|
|
if( NOT CPACK_GENERATOR)
|
|
|
set(CPACK_GENERATOR "ZIP")
|
|
|
@@ -376,7 +377,6 @@ endif(MSVC)
|
|
|
|
|
|
if(MSVC)
|
|
|
if(MSVC_RUNTIME STREQUAL "dynamic")
|
|
|
- message(STATUS "dynamic format")
|
|
|
# the INSTALL command is not called. The user can use the variable
|
|
|
# CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS to use a custom install command and install them however they want.
|
|
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
|
|
@@ -389,46 +389,52 @@ if(MSVC)
|
|
|
endif()
|
|
|
endif()
|
|
|
|
|
|
-include(CPack)
|
|
|
-
|
|
|
#
|
|
|
-if(INSTALL_INCLUDE_FILES)
|
|
|
- install(DIRECTORY Common DESTINATION ${RVC_INCLUDE_PATH} COMPONENT headers FILES_MATCHING PATTERN "*.h")
|
|
|
- install(FILES "${PROJECT_BINARY_DIR}/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
|
|
|
-endif()
|
|
|
+install(DIRECTORY Common DESTINATION ${RVC_INCLUDE_PATH} COMPONENT headers FILES_MATCHING PATTERN "*.h")
|
|
|
+install(FILES "${PROJECT_BINARY_DIR}/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
|
|
|
+
|
|
|
+if(MSVC)
|
|
|
+ file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/win/*")
|
|
|
+else()
|
|
|
+ file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/unix/*")
|
|
|
+endif(MSVC)
|
|
|
+install(PROGRAMS ${BIN_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
|
|
|
|
|
|
-file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/*")
|
|
|
-install(FILES ${BIN_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
|
|
|
-#install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/bin" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}" COMPONENT libraries)
|
|
|
install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/cfg" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}"
|
|
|
-COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
|
|
|
+ COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
|
|
|
install(FILES ${CMAKE_BINARY_DIR}/shell.ini DESTINATION ${RVC_CONFIG_PATH} COMPONENT scripts)
|
|
|
set(active_txt_file "${CMAKE_BINARY_DIR}/active.txt")
|
|
|
file(WRITE ${active_txt_file} "${RVC_VERSION}")
|
|
|
-#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_VERSION_DIR_PATH})")
|
|
|
-#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${active_txt_file} ${OUTPUT_VERSION_DIR_PATH}/active.txt )")
|
|
|
-
|
|
|
install(FILES ${active_txt_file} DESTINATION ${PACK_INSTALL_PREFIX_VERSION} COMPONENT scripts)
|
|
|
+# Actually, this directory only has root.ini for now.
|
|
|
install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/hardwarecfg" DESTINATION "${PACK_INSTALL_RUN_DIR}"
|
|
|
COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
|
|
|
if(MSVC)
|
|
|
file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.vbs")
|
|
|
install(FILES "${CMAKE_SOURCE_DIR}/test/rvc_test.bat" DESTINATION ${OUTPUT_CUR_DISK_PATH} COMPONENT scripts)
|
|
|
- install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.win32"
|
|
|
- DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg"
|
|
|
- RENAME "root.ini"
|
|
|
- COMPONENT scripts)
|
|
|
+ # set(ROOT_CONFIG_FILE_PATH "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.win32")
|
|
|
else(MSVC)
|
|
|
file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.sh")
|
|
|
- install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.unix"
|
|
|
- DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg"
|
|
|
- RENAME "root.ini"
|
|
|
- COMPONENT scripts)
|
|
|
+ # set(ROOT_CONFIG_FILE_PATH "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.unix")
|
|
|
endif(MSVC)
|
|
|
+install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/${ROOT_INI_NAME}"
|
|
|
+ DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg"
|
|
|
+ RENAME "root.ini"
|
|
|
+ COMPONENT scripts)
|
|
|
+install(PROGRAMS ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
|
|
|
+
|
|
|
+#appoint the component to install , except header file here.
|
|
|
+GET_CMAKE_PROPERTY(PACK_COMPONENTS_ALL COMPONENTS)
|
|
|
+FOREACH(item ${PACK_COMPONENTS_ALL})
|
|
|
+message(STATUS "compoent: ${item}")
|
|
|
+ENDFOREACH()
|
|
|
+list(REMOVE_ITEM PACK_COMPONENTS_ALL "headers" "tools" "symbols")
|
|
|
+set(CPACK_COMPONENTS_ALL ${PACK_COMPONENTS_ALL})
|
|
|
|
|
|
-install(FILES ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
|
|
|
-
|
|
|
+include(CPack)
|
|
|
|
|
|
+#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_VERSION_DIR_PATH})")
|
|
|
+#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${active_txt_file} ${OUTPUT_VERSION_DIR_PATH}/active.txt )")
|
|
|
|
|
|
# if necessary
|
|
|
# install(DIRECTORY ${CMAKE_SOURCE_DIR}/addin/mod DESTINATION ${RVC_MODULE_PATH} COMPONENT modules)
|