CMakeLists.txt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
  2. SET(CMAKE_C_STANDARD 11)
  3. PROJECT(aFun LANGUAGES C)
  4. SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
  5. SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) # 设置输出路径
  6. SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
  7. SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH})
  8. SET(BUILD_SHARED_LIBS TRUE) # 默认编译动态库
  9. IF(Build_Memory)
  10. ADD_DEFINITIONS(-DBUILD_MEM=1)
  11. ENDIF()
  12. IF(MSVC)
  13. SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
  14. MESSAGE("Build with MSVC")
  15. ELSE()
  16. ADD_COMPILE_OPTIONS(-fPIC) # 启用fPIC参数
  17. MESSAGE("Not build with MSVC")
  18. ENDIF()
  19. SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") # 设置安装路径
  20. IF (build_with_rpath)
  21. SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
  22. MESSAGE("SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) success!")
  23. ENDIF ()
  24. MESSAGE("CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
  25. MESSAGE("CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
  26. INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) # 添加include路径
  27. INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/cJson)
  28. if (MSVC)
  29. INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/dlfcn)
  30. endif ()
  31. ADD_DEFINITIONS(-DCC="${CMAKE_C_COMPILER}")
  32. ADD_DEFINITIONS(-DCXXC="${CMAKE_CXX_COMPILER}")
  33. ADD_DEFINITIONS(-DSRC_PATH="${CMAKE_SOURCE_DIR}")
  34. ADD_SUBDIRECTORY(src)
  35. IF(ENABLE_aFunTEST)
  36. ENABLE_TESTING()
  37. ADD_SUBDIRECTORY(test)
  38. MESSAGE("Enable Test Success!")
  39. ENDIF()
  40. INSTALL(TARGETS aFun)