linux编译C++的cmake文件(CMakeList.txt)

#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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值