#Cmake file for library UAPI.so
#author:>---hebaowen
#created:>--2015-4-20
cmake_minimum_required(VERSION 2.6)
PROJECT(JNI-UAPI)
#设置 CSGRDB_CPP_ENV 路径
#依赖库的头文件位于 ${CSGRDB_CPP_ENV}/include
#依赖库的32位库文件位于 ${CSGRDB_CPP_ENV}/lib
#依赖库的64位库文件位于 ${CSGRDB_CPP_ENV}/lib64
SET(CSGRDP_ENV /home/lijunjun/ENV/)
#设置UAPI文件版本号
SET(UAPI_VERSION "1.0.0.0")
#安装路径
SET (CMAKE_INSTALL_PREFIX ./Release_uapi)
#如果生成 32位 Makefile 外部调用方式为 cmake CMakeLists.txt -DUSE_32BIT=1
#注意 linux 和 aix 编译参数有差别,特别是 32位 使用 -q32 ,G++ 使用 -m32
MESSAGE(STATUS "system is " ${CMAKE_SYSTEM})
MESSAGE(STATUS "system name is " ${CMAKE_SYSTEM_NAME})
IF(USE_32BIT)
MESSAGE(STATUS "using 32bits")
SET(LINK_DIR ${CSGRDP_ENV}/lib-linux32-r)
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
MESSAGE(STATUS "using linux mode")
SET(CMAKE_CXX_FLAGS "-m32 -fPIC -Wall -Wno-format-y2k")
SET(INSTALL_DIR redhat5.5_32bit)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "AIX")
MESSAGE(STATUS "using AIX mode")
SET(CMAKE_CXX_FLAGS "-q32 -qnotempinc -qrtti=all -brtl")
SET(INSTALL_DIR aix6.1_32bit)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
MESSAGE(STATUS "using SunOS mode")
SET(CMAKE_CXX_FLAGS "-m32 -fPIC -Wall -Wno-format-y2k")
SET(INSTALL_DIR sunos_32bit)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
MESSAGE(STATUS "using HP-UX mode")
SET(CMAKE_CXX_FLAGS "+DD32 -AA +z -b")
SET(INSTALL_DIR hpux_32bit)
ELSE()
MESSAGE(FATAL_ERROR "system not support!")
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
ELSE()
MESSAGE(STATUS "using 64bits")
SET(LINK_DIR ${CSGRDP_ENV}/lib-linux64-r)
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
MESSAGE(STATUS "using linux mode")
SET(CMAKE_CXX_FLAGS "-m64 -fPIC -Wall -Wno-format-y2k")
SET(INSTALL_DIR redhat5.5_64bit)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "AIX")
MESSAGE(STATUS "using AIX mode")
SET(CMAKE_CXX_FLAGS "-q64 -qnotempinc -qrtti=all -brtl")
SET(INSTALL_DIR aix6.1_64bit)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
MESSAGE(STATUS "using SunOS mode")
SET(CMAKE_CXX_FLAGS "-m64 -fPIC -Wall -Wno-format-y2k")
SET(INSTALL_DIR sunos_64bit)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
MESSAGE(STATUS "using HP-UX mode")
SET(CMAKE_CXX_FLAGS "+DD64 -AA +z -b")
SET(INSTALL_DIR hpux_64bit)
ELSE()
MESSAGE(FATAL_ERROR "system not support!")
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
ENDIF(USE_32BIT)
#设置变量 SOURCE_FILES ,表示所有的源文件
#AUX_SOURCE_DIRECTORY 自动获取指定路径下的所有源文件
AUX_SOURCE_DIRECTORY("." SOURCE_FILES)
#相关头文件的目录
#确定使用 JXAPI
MESSAGE(STATUS "using jx api")
INCLUDE_DIRECTORIES(
#${CSGRDP_ENV}/include-linux
"./")
#相关库文件的目录
LINK_DIRECTORIES(
${LINK_DIR}
)
#生成动态链接库
ADD_LIBRARY(JNI-UAPI SHARED ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(JNI-UAPI UAPI OB JTC ACE)
#表示生成的执行文件所在路
SET_TARGET_PROPERTIES(JNI-UAPI PROPERTIES OUTPUT_NAME "JNI-UAPI")
SET_TARGET_PROPERTIES(JNI-UAPI PROPERTIES VERSION ${UAPI_VERSION})
#安装路径
INSTALL(TARGETS JNI-UAPI
LIBRARY DESTINATION ${INSTALL_DIR}/lib
)
INSTALL(FILES
${CSGRDP_ENV}/include-linux/uapi/csgrdb_rtdb_uapi.h
${CSGRDP_ENV}/include-linux/uapi/csgrdb_rtdb_uapi_err.h
DESTINATION ${INSTALL_DIR}/include
)
注意:linux中执行makefile命令:
cmake CMakeLists.txt
make
1.必须使用linux版jdk的头文件
2.注意CMakeList.txt文件中环境变量的配置,请参考《
linux编译C++的cmake文件(CMakeList.txt)
》笔记。
3.注意用户权限和用户环境变量配置,不同的用户环境变量配置不同,用户间跳转“-”必不可少。例如 su - root