generallib/CMakeLists.txt

91 lines
3.7 KiB
CMake
Raw Normal View History

2020-02-06 18:00:41 +00:00
cmake_minimum_required(VERSION 3.11)
2020-09-30 03:43:43 +00:00
enable_language(CXX)
project(generallib)
add_subdirectory(general)
2020-11-15 08:32:29 +00:00
find_package(libevent REQUIRED)
set(EVENT__HAVE_LIBEVENT 1)
2020-11-15 08:37:45 +00:00
message(STATUS "libevent include: " ${libevent_INCLUDE_DIR})
2020-11-17 16:40:46 +00:00
message(STATUS "libevent lib: " ${libevent_LIBRARIES})
message(STATUS "libevent lib Dirs: " ${libevent_LIB_DIRS})
2020-05-09 00:32:36 +00:00
SET(SRC_SDK sdk_main.c test/src/heapsort/main.c)#生成动态库需要至少包含一个源文件
add_library(generallib STATIC $<TARGET_OBJECTS:General> ${SRC_SDK})
2020-11-17 16:40:46 +00:00
2020-09-30 03:43:43 +00:00
message("CMAKE_BINARY_DIR is " ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/libd)
2020-11-17 16:40:46 +00:00
link_directories(${libevent_LIB_DIRS})
set_target_properties(generallib PROPERTIES LINKER_LANGUAGE CXX)
target_link_libraries(generallib public
-Wl,--whole-archive
libevent.a
-Wl,--no-whole-archive
2020-02-10 13:46:47 +00:00
)
2020-04-24 12:39:29 +00:00
message("current path is" ${CMAKE_CURRENT_SOURCE_DIR})
IF (WIN32)
2020-04-24 14:55:52 +00:00
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
2020-11-15 08:49:41 +00:00
#message("using clang")
2020-04-24 14:55:52 +00:00
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
2020-11-15 08:49:41 +00:00
#message("using gcc")
#add_custom_command (
# TARGET generallib POST_BUILD
# COMMAND ar -x
# ${CMAKE_CURRENT_SOURCE_DIR}/libd/libevent.a
# COMMENT "package library ar -x ${CMAKE_CURRENT_SOURCE_DIR}/libd/libevent.a "
#)
#add_custom_command (
# TARGET generallib POST_BUILD
# COMMAND ar rc libgeneral.a *.obj
# COMMENT "package library ar rc *.o "
#)
#add_custom_command(
# TARGET generallib POST_BUILD
# COMMAND del *.o *.obj
# COMMENT "remove all step library"
#)
2020-04-24 14:55:52 +00:00
# using GCC
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
message("using asm")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message("using msvc")
endif()
endif()
# copy header files
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/obj)
set(COPYITEM inc)
file(GLOB INCLUDES ${PROJECT_SOURCE_DIR}/inc/*)
file(COPY ${INCLUDES} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
message("include dir " ${INCLUDES})
file(GLOB PatternINCLUDES ${PROJECT_SOURCE_DIR}/general/src/pattern/*)
2020-11-19 15:28:05 +00:00
file(COPY ${PatternINCLUDES} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/pattern
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
message( "copy pattern library" ${PatternINCLUDES})
file(GLOB EncryptINCLUDES ${PROJECT_SOURCE_DIR}/general/src/encrypt/*.h)
2020-11-19 15:28:05 +00:00
file(COPY ${EncryptINCLUDES} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/encrypt
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
file(GLOB MathINCLUDES ${PROJECT_SOURCE_DIR}/general/src/math/*.hpp)
message( "copy math library" ${MathINCLUDES})
add_custom_command(TARGET generallib PRE_LINK
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/general/src/math/eigen ${LIBRARY_OUTPUT_PATH}/inc/math/eigen)
message( "copy third library")
file(GLOB THIRD ${PROJECT_SOURCE_DIR}/general/third/include/*)
file(COPY ${THIRD} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/third/
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
message( "copy net ")
file(GLOB NET ${PROJECT_SOURCE_DIR}/general/src/net/*.h)
file(COPY ${NET} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)
file(GLOB ALGORITHM ${PROJECT_SOURCE_DIR}/general/src/algorithm/*)
file(COPY ${ALGORITHM} DESTINATION ${LIBRARY_OUTPUT_PATH}/inc/
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE GROUP_READ WORLD_READ)