mirror of
https://github.com/asdlokj1qpi233/subconverter.git
synced 2025-10-28 12:22:37 +00:00
Fix dependency bug for compiling on some platforms. Add specifying port via environment variable. Add BacktoCN.list extracted from ConnersHua's original BakctoCN configuration.
93 lines
2.8 KiB
CMake
93 lines
2.8 KiB
CMake
project(subconverter LANGUAGES CXX)
|
|
cmake_minimum_required(VERSION 3.4)
|
|
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
|
|
IF(NOT CMAKE_BUILD_TYPE)
|
|
SET(CMAKE_BUILD_TYPE Release)
|
|
ENDIF()
|
|
SET(CMAKE_CXX_STANDARD 17)
|
|
ADD_DEFINITIONS(-Wall -Wextra -Wno-unused-parameter -Wno-unused-result)
|
|
|
|
OPTION(USING_STD_REGEX "Use std::regex from C++ library instead of PCRECPP." OFF)
|
|
OPTION(USING_MALLOC_TRIM "Call malloc_trim after processing request to lower memory usage (Your system must support malloc_trim)." OFF)
|
|
|
|
INCLUDE(CheckCXXSourceCompiles)
|
|
CHECK_CXX_SOURCE_COMPILES(
|
|
"
|
|
#include<string>
|
|
int main(){std::to_string(0);return 0;}
|
|
" HAVE_TO_STRING)
|
|
|
|
IF(APPLE)
|
|
ADD_DEFINITIONS(-D_MACOS)
|
|
ENDIF()
|
|
|
|
IF(HAVE_TO_STRING)
|
|
ADD_DEFINITIONS(-DHAVE_TO_STRING)
|
|
ENDIF()
|
|
|
|
IF(USING_MALLOC_TRIM)
|
|
ADD_DEFINITIONS(-DMALLOC_TRIM)
|
|
ENDIF()
|
|
|
|
ADD_EXECUTABLE(subconverter
|
|
src/logger.cpp
|
|
src/main.cpp
|
|
src/misc.cpp
|
|
src/multithread.cpp
|
|
src/nodemanip.cpp
|
|
src/rapidjson_extra.cpp
|
|
src/speedtestutil.cpp
|
|
src/subexport.cpp
|
|
src/webget.cpp
|
|
src/webserver_libevent.cpp)
|
|
INCLUDE_DIRECTORIES(src)
|
|
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR})
|
|
|
|
FIND_PACKAGE(PkgConfig REQUIRED)
|
|
|
|
SET(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
FIND_PACKAGE(Threads REQUIRED)
|
|
TARGET_LINK_LIBRARIES(subconverter ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
PKG_CHECK_MODULES(LIBEVENT libevent REQUIRED)
|
|
FIND_PATH(LIBEVENT_INCLUDE_DIR NAMES event.h PATHS ${LIBEVENT_INCLUDE_DIRS})
|
|
FIND_LIBRARY(LIBEVENT_LIBRARY NAMES event PATHS ${LIBEVENT_LIBRARY_DIRS})
|
|
LINK_DIRECTORIES(${LIBEVENT_LIBRARY_DIRS})
|
|
INCLUDE_DIRECTORIES(${LIBEVENT_INCLUDE_DIR})
|
|
TARGET_LINK_LIBRARIES(subconverter ${LIBEVENT_LIBRARY})
|
|
|
|
FIND_PACKAGE(CURL 7.54.0 REQUIRED)
|
|
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
|
|
TARGET_LINK_LIBRARIES(subconverter ${CURL_LIBRARIES})
|
|
ADD_DEFINITIONS(-DCURL_STATICLIB)
|
|
|
|
FIND_PACKAGE(OpenSSL 1.1.0 REQUIRED)
|
|
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
|
|
TARGET_LINK_LIBRARIES(subconverter ${OPENSSL_LIBRARIES})
|
|
|
|
FIND_PACKAGE(Rapidjson REQUIRED)
|
|
INCLUDE_DIRECTORIES(${RAPIDJSON_INCLUDE_DIRS})
|
|
|
|
PKG_CHECK_MODULES(YAML_CPP yaml-cpp REQUIRED)
|
|
FIND_LIBRARY(YAML_CPP_LIBRARY NAMES yaml-cpp yaml-cppd PATHS ${YAML_CPP_LIBRARY_DIRS})
|
|
LINK_DIRECTORIES(${YAML_CPP_LIBRARY_DIRS})
|
|
INCLUDE_DIRECTORIES(${YAML_CPP_INCLUDE_DIRS})
|
|
TARGET_LINK_LIBRARIES(subconverter ${YAML_CPP_LIBRARY})
|
|
|
|
IF(USING_STD_REGEX STREQUAL "ON")
|
|
ADD_DEFINITIONS(-DUSE_STD_REGEX)
|
|
ELSE()
|
|
FIND_PACKAGE(PCRECPP REQUIRED)
|
|
INCLUDE_DIRECTORIES(${PCRECPP_INCLUDE_DIRS})
|
|
TARGET_LINK_LIBRARIES(subconverter ${PCRECPP_LIBRARIES})
|
|
ADD_DEFINITIONS(-DPCRE_STATIC)
|
|
ENDIF()
|
|
|
|
IF(WIN32)
|
|
TARGET_LINK_LIBRARIES(subconverter wsock32 ws2_32)
|
|
ELSE()
|
|
INCLUDE(GNUInstallDirs)
|
|
INSTALL(TARGETS subconverter DESTINATION ${CMAKE_INSTALL_BINDIR}/subconverter)
|
|
INSTALL(DIRECTORY base/ DESTINATION ${CMAKE_INSTALL_BINDIR}/subconverter FILES_MATCHING PATTERN "*")
|
|
ENDIF()
|