| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- cmake_minimum_required(VERSION 3.5)
- project("fastweb")
- # 设置全局属性
- set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-
- # 设置自定义配置类型
- if(MSVC)
- set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Build config types" FORCE)
- endif()
- # C++等级
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
- set(FASTWEBCORE ${PROJECT_NAME}core)
- # 安装复制
- set(CMAKE_INSTALL_ALWAYS_COPY TRUE)
- # 设置根目录
- set(ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
- # 添加三方模块
- if(MSVC)
- add_subdirectory(${CMAKE_SOURCE_DIR}/3rdparty/lua)
- endif()
- # Recursively get all source files
- file(GLOB_RECURSE SOURCE_FILES
- "${PROJECT_SOURCE_DIR}/src/*.cpp"
- )
- file(GLOB_RECURSE HEADER_FILES
- "${PROJECT_SOURCE_DIR}/src/*.h"
- )
- foreach(source IN LISTS SOURCE_FILES)
- get_filename_component(source_path "${source}" PATH)
- file(RELATIVE_PATH source_path_rel "${PROJECT_SOURCE_DIR}" "${source_path}")
- string(REPLACE "/" "\\" source_path_rel_win "${source_path_rel}")
- source_group(${source_path_rel_win} FILES "${source}")
- endforeach()
- foreach(header IN LISTS HEADER_FILES)
- get_filename_component(header_path "${header}" PATH)
- file(RELATIVE_PATH header_path_rel "${PROJECT_SOURCE_DIR}" "${header_path}")
- string(REPLACE "/" "\\" header_path_rel_win "${header_path_rel}")
- source_group(${header_path_rel_win} FILES "${header}")
- endforeach()
- set(YLIB ${CMAKE_INSTALL_PREFIX}/../ylib)
- include_directories(${PROJECT_SOURCE_DIR}/src)
- if(MSVC)
-
- include_directories(${PROJECT_SOURCE_DIR}/src)
- include_directories(${PROJECT_SOURCE_DIR}/3rdparty)
- include_directories(${PROJECT_SOURCE_DIR}/3rdparty/lua/include)
- include_directories(${PROJECT_SOURCE_DIR}/3rdparty/soci/include)
- include_directories(${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Windows/Include)
- include_directories(${YLIB}/include)
- include_directories(D:/lib/ylib/3rdparty)
- add_compile_options(/W3 /wd4819)
- else()
- include_directories(${PROJECT_SOURCE_DIR}/3rdparty)
- include_directories(/usr/local/include)
- include_directories(/opt/lua54/include)
- add_definitions(-DfPIC)
- endif()
- # 根据构建类型添加定义
- add_library(${FASTWEBCORE} SHARED ${SOURCE_FILES} ${HEADER_FILES})
- set_target_properties(${FASTWEBCORE} PROPERTIES OUTPUT_NAME_DEBUG "${FASTWEBCORE}_d" OUTPUT_NAME_RELEASE ${FASTWEBCORE})
- if(MSVC)
- target_link_libraries(${FASTWEBCORE} PRIVATE
- odbc32.lib
- User32.lib
- Advapi32.lib
- IPHLPAPI.lib
- WS2_32.lib
- Shell32.lib
- lualib
- ${YLIB}/lib/libcrypto_static_win64.lib
- $<$<CONFIG:Debug>:${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Lib/HPSocket_D.lib>
- $<$<CONFIG:Debug>:${YLIB}/lib/leveldb_d.lib>
- $<$<CONFIG:Debug>:${YLIB}/lib/ylib_d.lib>
- $<$<CONFIG:Debug>:${YLIB}/lib/sqlite3_d.lib>
-
- $<$<CONFIG:Release>:${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Lib/HPSocket.lib>
- $<$<CONFIG:Release>:${YLIB}/lib/leveldb.lib>
- $<$<CONFIG:Release>:${YLIB}/lib/ylib.lib>
- $<$<CONFIG:Release>:${YLIB}/lib/sqlite3.lib>
- )
- else()
- set(CMAKE_INSTALL_RPATH "/usr/local/lib")
- link_directories(/usr/lib/x86_64-linux-gnu)
- link_directories(/usr/local/lib)
- target_link_libraries(${FASTWEBCORE}
- hpsocket
- ylib_d
- leveldb
- crypto
- /opt/lua54/lib/liblua.a
- pthread
- sqlite3
- dl
- rt
- stdc++fs
- )
- endif()
- add_definitions(-DFASTWEB_EXE)
- # 编译测试调用示例
- add_executable(${PROJECT_NAME}
- tests/main.cpp
- tests/fastweb.cpp
- )
- if(MSVC)
- target_link_libraries(${PROJECT_NAME} PRIVATE
- ${FASTWEBCORE}
- odbc32.lib
- User32.lib
- Advapi32.lib
- IPHLPAPI.lib
- WS2_32.lib
- Shell32.lib
- ${YLIB}/lib/libcrypto_static_win64.lib
- $<$<CONFIG:Debug>:${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Lib/HPSocket_D.lib>
- $<$<CONFIG:Debug>:${YLIB}/lib/ylib_d.lib>
- $<$<CONFIG:Release>:${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Lib/HPSocket.lib>
- $<$<CONFIG:Release>:${YLIB}/lib/ylib.lib>
-
- )
- else()
- target_link_libraries(${PROJECT_NAME}
- ${FASTWEBCORE}
- hpsocket
- ylib_d
- pthread
- mysqlcppconn
- ssl
- z
- )
- endif()
- set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
-
- ######################## 安装 ########################
- if(MSVC)
- install(TARGETS ${FASTWEBCORE} DESTINATION $<IF:$<CONFIG:Debug>,bin/debug,bin/release>)
- install(TARGETS ${PROJECT_NAME} DESTINATION $<IF:$<CONFIG:Debug>,bin/debug,bin/release>)
- install(FILES ${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Lib/HPSocket_D.dll DESTINATION bin/debug)
- install(FILES ${PROJECT_SOURCE_DIR}/3rdparty/HP-Socket/Lib/HPSocket.dll DESTINATION bin/release)
- install(FILES config.ini DESTINATION bin/debug)
- install(FILES config.ini DESTINATION bin/release)
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/www DESTINATION bin/debug)
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/config DESTINATION bin/debug)
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/www DESTINATION bin/release)
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/config DESTINATION bin/release)
- install(FILES ${PROJECT_SOURCE_DIR}/src/core/entry.h DESTINATION include)
- install(FILES ${PROJECT_SOURCE_DIR}/include/dll_interface.h DESTINATION include)
- install(FILES ${PROJECT_SOURCE_DIR}/src/module/basemodule.h DESTINATION include)
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/3rdparty/lua/include/ DESTINATION include/lua)
- else()
-
- install(TARGETS ${FASTWEBCORE} DESTINATION lib)
- install(TARGETS ${PROJECT_NAME} DESTINATION bin)
- install(FILES ${PROJECT_SOURCE_DIR}/src/core/entry.h DESTINATION include/${PROJECT_NAME})
- install(FILES ${PROJECT_SOURCE_DIR}/include/dll_interface.h DESTINATION include/${PROJECT_NAME})
- install(FILES ${PROJECT_SOURCE_DIR}/src/module/basemodule.h DESTINATION include/${PROJECT_NAME})
- install(FILES config.ini DESTINATION share/${PROJECT_NAME})
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/www DESTINATION share/${PROJECT_NAME})
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/config DESTINATION share/${PROJECT_NAME})
- endif()
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/3rdparty/sol DESTINATION include)
|