CMAKE_MINIMUM_REQUIRED(VERSION 3.16) SET(CMAKE_C_STANDARD 11) PROJECT(aFun LANGUAGES C) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) # 设置输出路径 SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}) SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}) SET(BUILD_SHARED_LIBS TRUE) # 默认编译动态库 IF(Build_Memory) ADD_DEFINITIONS(-DBUILD_MEM=1) ENDIF() IF(MSVC) SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) MESSAGE("Build with MSVC") ELSE() ADD_COMPILE_OPTIONS(-fPIC) # 启用fPIC参数 MESSAGE("Not build with MSVC") ENDIF() SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") # 设置安装路径 IF (build_with_rpath) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) MESSAGE("SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) success!") ENDIF () MESSAGE("CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") MESSAGE("CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}") INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) # 添加include路径 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/cJson) if (MSVC) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/dlfcn) endif () ADD_DEFINITIONS(-DCC="${CMAKE_C_COMPILER}") ADD_DEFINITIONS(-DCXXC="${CMAKE_CXX_COMPILER}") ADD_DEFINITIONS(-DSRC_PATH="${CMAKE_SOURCE_DIR}") ADD_SUBDIRECTORY(src) IF(ENABLE_aFunTEST) ENABLE_TESTING() ADD_SUBDIRECTORY(test) MESSAGE("Enable Test Success!") ENDIF() INSTALL(TARGETS aFun)