103 lines
4.0 KiB
CMake

cmake_minimum_required(VERSION 3.10.0)
project(fairino_cppSDK VERSION 0.1.0 LANGUAGES C CXX)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic -fPIC)
endif()
# 设置编译开关
if(WIN32)
message("this windows platform")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_definitions(-DWINDOWS_OPTION)
elseif(UNIX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
message("this is unix-like system")
add_definitions(-DLINUX_OPTION)
endif()
set(BASE_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src/include/Base)
set(LOG_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src/include/Log)
set(ROBOT_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src/include/Robot-CN)
set(TCP_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src/include/TcpClient)
set(XMLRPC_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/src/include/XmlRpc)
set(BASE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/src/Base)
set(LOG_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/src/Log)
set(ROBOT_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/src/Robot)
set(TCP_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/src/TcpClient)
set(XMLRPC_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/src/XmlRpc)
message(${XMLRPC_SRC})
include_directories(${BASE_INCLUDE})
include_directories(${LOG_INCLUDE})
include_directories(${ROBOT_INCLUDE})
include_directories(${TCP_INCLUDE})
include_directories(${XMLRPC_INCLUDE})
file(GLOB ALL_INCLUDE ${BASE_INCLUDE}/*.h
${BASE_INCLUDE}/*.hpp
${LOG_INCLUDE}/*.h
${ROBOT_INCLUDE}/*.h
${TCP_INCLUDE}/*.h
${XMLRPC_INCLUDE}/*.h)
file(GLOB ALL_SRC ${BASE_SRC}/*.cpp
${LOG_SRC}/*.c
${LOG_SRC}/*.cpp
${ROBOT_SRC}/*.cpp
${TCP_SRC}/*.cpp
${XMLRPC_SRC}/*.cpp)
if(WIN32)
# 静态库路径
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Release)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Debug)
# 动态库路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Release)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Release)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Debug)
add_library(fairino SHARED ${ALL_INCLUDE} ${ALL_SRC})
#add_library(fairinod STATIC ${ALL_INCLUDE} ${ALL_SRC})
target_link_libraries(fairino ws2_32)
target_link_libraries(fairino Shlwapi)
#add_executable(test_fairino ${ALL_INCLUDE} ${ALL_SRC} ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
#target_link_libraries(test_fairino ws2_32)
#target_link_libraries(test_fairino Shlwapi)
elseif(UNIX)
# 静态库路径
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/LinuxBuild/bin)
# 动态库路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/LinuxBuild/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/LinuxBuild/bin)
add_library(fairino SHARED ${ALL_INCLUDE} ${ALL_SRC})
# 添加调试信息
SET(CMAKE_BUILD_TYPE "Release")
target_compile_options(fairino PRIVATE -g)
# 关闭优化选项
target_compile_options(fairino PRIVATE -O0)
# 为动态库生成版本信息
set_target_properties(fairino PROPERTIES VERSION 2.3.2 SOVERSION 2)
add_executable(test_fairino ${ALL_INCLUDE} ${ALL_SRC} ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
SET(CMAKE_BUILD_TYPE "Release")
# 添加调试信息
target_compile_options(test_fairino PRIVATE -g)
# 关闭优化选项
target_compile_options(test_fairino PRIVATE -O0)
target_link_libraries(test_fairino pthread)
#target_link_libraries(test_fairino ${CMAKE_CURRENT_SOURCE_DIR}/LinuxBuild/bin/libfairino.so)
endif()