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


发布了85 篇原创文章 · 获赞 47 · 访问量 32万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览