cmake_minimum_required(VERSION 3.6) project(sxtwl_cpp) IF(MSVC) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS) add_compile_options(/wd26495) # 初始化警告 add_compile_options(/wd6011) #可能为null指针警告 add_compile_options(/wd4244) #隐式转换可能丢失数据警告 add_compile_options(/wd4101) #未引用的局部变量警告 add_compile_options(/wd4267) #隐式转换可能丢失数据警告 size_t -> int add_compile_options(/wd4018) #有符号与无符号的比较 ENDIF() #编译库的例子 add_subdirectory(src) #编译例子 if(SXTWL_BUILD_EXAMPLES) add_subdirectory(example) endif(SXTWL_BUILD_EXAMPLES) #python的接口导出 # if(SXTWL_WRAPPER_PYTHON) # find_package(SWIG REQUIRED) # include(${SWIG_USE_FILE}) # find_package(PythonLibs) # include_directories(${PYTHON_INCLUDE_DIR} "./src") # set(CMAKE_SWIG_FLAGS) # set_property(SOURCE swig/sxtwl.i PROPERTY CPLUSPLUS ON) # SWIG_ADD_MODULE(sxtwl_python python swig/sxtwl.i) # #SWIG_ADD_LIBRARY(sxtwl_python MODULE LANGUAGE python SOURCES swig/sxtwl.i) # SWIG_LINK_LIBRARIES(sxtwl_python ${PYTHON_LIBRARY} sxtwl) # endif(SXTWL_WRAPPER_PYTHON) #java的接口导出(适作于android, 在externalNativeBuild 下的cmake加上 arguments "-DSXTWL_WRAPPER_JAVA=1") if(SXTWL_WRAPPER_JAVA) # find_package(SWIG REQUIRED) IF(ANDROID) message(STATUS "Android Jni") ELSE(ANDROID) find_package(JNI) if(${JNI_FOUND}) message(STATUS "Jni Found") else(${JNI_FOUND}) message(FATAL_ERROR "not found Jni") endif() endif(ANDROID) include_directories(${JNI_INCLUDE_DIRS} "./src") # #增加包名 # IF(ANDROID) # #参考:https://github.com/sureshjoshi/android-ndk-swig-example/blob/master/AS3/app/CMakeLists.txt # set(JAVA_GEN_PACKAGE "com.seantone.sxtwl") # string(REPLACE "." "/" JAVA_GEN_SUBDIR ${JAVA_GEN_PACKAGE}) # set(JAVA_GEN_DIR ${Project_SOURCE_DIR}/src/main/java/${JAVA_GEN_SUBDIR}) # # -s选项为strip,不strip生成的库文件会很大 # set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") # set(CMAKE_SWIG_FLAGS -c++ -package ${JAVA_GEN_PACKAGE}) # if(CONSOLE) # else(CONSOLE) # set(CMAKE_SWIG_OUTDIR ${JAVA_GEN_DIR}) # set(SWIG_OUTFILE_DIR ${Project_SOURCE_DIR}/src/main/sxtwl_jni_cpp/sxtwlJAVA_wrap.cxx) # endif(CONSOLE) # ELSE(ANDROID) # set(CMAKE_SWIG_FLAGS -c++ -package com.huoyaojing.sxtwl) # ENDIF(ANDROID) # set_property(SOURCE swig/sxtwl.i PROPERTY CPLUSPLUS ON) # SWIG_ADD_MODULE(sxtwl_java java com.seantone.sxtwl) # #SWIG_ADD_LIBRARY(sxtwl_java MODULE LANGUAGE java SOURCES swig/sxtwl.i) # SWIG_LINK_LIBRARIES(sxtwl_java ${JNI_LIBRARIES} sxtwl) add_library(sxtwl_java SHARED "./export/java/sxtwl_wrap.cxx") target_link_libraries(sxtwl_java sxtwl ${JNI_LIBRARIES}) endif(SXTWL_WRAPPER_JAVA) #lua接口的导出 if(SXTWL_WRAPPER_LUA) # find_package(SWIG REQUIRED) # include(${SWIG_USE_FILE}) find_package(Lua) if(${LUA_FOUND}) message(STATUS "lua Found") else(${LUA_FOUND}) message(FATAL_ERROR "not found lua") endif() include_directories(${LUA_INCLUDE_DIR} "./src") add_library(sxtwl_lua SHARED "./export/lua/sxtwl_wrap.cxx") target_link_libraries(sxtwl_lua sxtwl ${LUA_LIBRARIES}) # set_property(SOURCE swig/sxtwl.i PROPERTY CPLUSPLUS ON) # set(CMAKE_SWIG_FLAGS) # SWIG_ADD_MODULE(sxtwl_lua lua swig/sxtwl.i) # #SWIG_ADD_LIBRARY(sxtwl_lua MODULE LANGUAGE lua SOURCES swig/sxtwl.i) # SWIG_LINK_LIBRARIES(sxtwl_lua ${LUA_LIBRARIES} sxtwl) endif(SXTWL_WRAPPER_LUA) #C#接口导出 if(SXTWL_WRAPPER_CSHARP) # find_package(SWIG REQUIRED) # include(${SWIG_USE_FILE}) include_directories( "./src") add_library(sxtwl_csharp SHARED "./export/C#/sxtwl_wrap.cxx") target_link_libraries(sxtwl_csharp sxtwl) # set_property(SOURCE swig/sxtwl.i PROPERTY CPLUSPLUS ON) # set(CMAKE_SWIG_FLAGS) # SWIG_ADD_MODULE(sxtwl_csharp csharp swig/sxtwl.i) # #SWIG_ADD_LIBRARY(sxtwl_csharp MODULE LANGUAGE csharp SOURCES swig/sxtwl.i) # SWIG_LINK_LIBRARIES(sxtwl_csharp sxtwl) endif(SXTWL_WRAPPER_CSHARP) #php接口导出(仅支持php5和php7) if(SXTWL_WRAPPER_PHP5) include(${CMAKE_SOURCE_DIR}/cmake/FindPHP.cmake) include_directories(${PHP_INCLUDE_DIRS} ${PHP_EXTENSIONS_INCLUDE_DIR} "./src") add_library(sxtwl_php5 SHARED "./export/php5/sxtwl_wrap.cxx") target_link_libraries(sxtwl_php5 sxtwl) # find_package(SWIG REQUIRED) # include(${SWIG_USE_FILE}) # set_property(SOURCE swig/sxtwl.i PROPERTY CPLUSPLUS ON) # set(CMAKE_SWIG_FLAGS) # if(${PHP_VERSION_MAJOR} MATCHES 7) # SWIG_ADD_MODULE(sxtwl_php php7 swig/sxtwl.i) # else(${PHP_VERSION_MAJOR} MATCHES 7) # SWIG_ADD_MODULE(sxtwl_php php swig/sxtwl.i) # endif(${PHP_VERSION_MAJOR} MATCHES 7) # SWIG_LINK_LIBRARIES(sxtwl_php sxtwl ) endif(SXTWL_WRAPPER_PHP5) if(SXTWL_WRAPPER_PHP7) include(${CMAKE_SOURCE_DIR}/cmake/FindPHP.cmake) include_directories(${PHP_INCLUDE_DIRS} ${PHP_EXTENSIONS_INCLUDE_DIR} "./src") add_library(sxtwl_php7 SHARED "./export/php5/sxtwl_wrap.cxx") target_link_libraries(sxtwl_php7 sxtwl) # find_package(SWIG REQUIRED) # include(${SWIG_USE_FILE}) # set_property(SOURCE swig/sxtwl.i PROPERTY CPLUSPLUS ON) # set(CMAKE_SWIG_FLAGS) # if(${PHP_VERSION_MAJOR} MATCHES 7) # SWIG_ADD_MODULE(sxtwl_php php7 swig/sxtwl.i) # else(${PHP_VERSION_MAJOR} MATCHES 7) # SWIG_ADD_MODULE(sxtwl_php php swig/sxtwl.i) # endif(${PHP_VERSION_MAJOR} MATCHES 7) # SWIG_LINK_LIBRARIES(sxtwl_php sxtwl ) endif(SXTWL_WRAPPER_PHP7) # for golang if(SXTWL_WRAPPER_GO) include_directories("./src") add_library(sxtwl_go STATIC "./export/golang/sxtwl_wrap.cxx") target_link_libraries(sxtwl_go sxtwl) endif(SXTWL_WRAPPER_GO) # for c if(SXTWL_WRAPPER_C) add_subdirectory(c) endif(SXTWL_WRAPPER_C)