cmake脚本

整理了一下cmake,写下了下面的脚本,自动填写CMakeLists.txt文件.
然后执行cmake . 生成Makefile
在执行make进行编译

#!/bin/bash

TARGET_NAME=cmake-test
# 目标文件类型: A :静态库 SO :动态库  EXE :可执行
TARGET_TYPE=SO

#指定编译器 gcc g++
COMPILER=gcc
#gcc编译参数指定
C_FLAGS=
#g++编译参数指定
CXX_FLAGS=

#依赖系统库追加
SYSTEM_LIBS="pthread m"

# make编译信息输出; y :开启 n :关闭
COMPILE_INFO_OUTPUT=y

#########################填充上方变量即可##########想追加内容修改下方内容#####################

cat > CMakeLists.txt << EOF
cmake_minimum_required(VERSION 2.8)
project(${TARGET_NAME})
EOF

#添加编译输出信息
if [ ${COMPILE_INFO_OUTPUT} = y ] ;then
cat >> CMakeLists.txt << EOF
set(CMAKE_VERBOSE_MAKEFILE on)
EOF
fi

#添加编译器配置
if [ ${COMPILER} = "g++" ] ;then
cat >> CMakeLists.txt << EOF
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_C_FLAGS "${CXX_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
EOF
elif [ ${COMPILER} = "gcc" ] ;then
cat >> CMakeLists.txt << EOF
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_C_FLAGS "${C_FLAGS} -Wall")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_C_FLAGS_RELEASE "-O3")
EOF
fi

#添加头文件路径 如果提示source命令未找到执行dpkg-reconfigure dash,选择no
#source ./IncludePath.config
#for tmp_path in `echo ${INC_PATH}`
#do
#cat >> CMakeLists.txt << EOF
#include_directories(${tmp_path})
#EOF
#done
INC_PATH=`find  -iname "*.h" | sort -r | grep -v "CMakeFiles/" | xargs -i dirname {} | sort | uniq`
for tmp_path in `echo ${INC_PATH}`
do
cat >> CMakeLists.txt << EOF
include_directories(${tmp_path})
EOF
done

#添加源文件子路径
SRC_PATH=`find  -iname "*.c" | sort -r | grep -v "CMakeFiles/" | xargs -i dirname {} | sort | uniq`
for tmp_path in `echo ${SRC_PATH}`
do
cat >> CMakeLists.txt << EOF
AUX_SOURCE_DIRECTORY(${tmp_path} DIR_SRCS)
EOF
done

mkdir -p cmake/modules
cat > ./cmake/modules/Findlib${LIBS}.cmake << EOF
MESSAGE(STATUS "Using bundled Findlibdb.cmake...")
FIND_PATH(
  LIB${LIBS}_INCLUDE_DIR
  pthread.h 
  /usr/include/ 
  /usr/local/include/ 
  )

FIND_LIBRARY(
  LIB${LIBS}_LIBRARIES 
  NAMES  ${LIBS}
  PATHS /usr/lib/ /usr/local/lib/ /usr/lib32/ /lib
  )
EOF


#链接系统库
cat >> CMakeLists.txt << EOF
LINK_LIBRARIES(${SYSTEM_LIBS})
EOF

#cat >> CMakeLists.txt << EOF
# 
#FIND_PACKAGE(${LIBS}  REQUIRED)
#
#MARK_AS_ADVANCED(
#
#LIB${LIBS}_INCLUDE_DIR
#
#LIB${LIBS}_LIBRARIES
#
#)
#IF (LIBDB_CXX_INCLUDE_DIR AND LIBDB_CXX_LIBRARIES)
#
#MESSAGE(STATUS "Found libdb libraries")
#
#INCLUDE_DIRECTORIES(\${LIB${LIBS}_INCLUDE_DIR})
#
#MESSAGE( \${LIB${LIBS}_LIBRARIES} )
#
#TARGET_LINK_LIBRARIES(main \${LIB${LIBS}_LIBRARIES} )
#
#ENDIF (LIB${LIBS}_INCLUDE_DIR AND LIB${LIBS}_LIBRARIES)
#EOF

#cat >> CMakeLists.txt << EOF
#target_link_libraries(${PROJECT_NAME} ${LIBS})
#EOF

#添加源文件路径
cat >> CMakeLists.txt << EOF
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
EOF

#添加生成文件类型
if [ ${TARGET_TYPE} = "EXE" ] ;then
cat >> CMakeLists.txt << EOF
add_executable(\${PROJECT_NAME} \${DIR_SRCS})
EOF
elif [ ${TARGET_TYPE} = "SO" ] ;then
cat >> CMakeLists.txt << EOF
add_library(\${PROJECT_NAME} SHARED \${DIR_SRCS})
EOF
elif [ ${TARGET_TYPE} = "A" ] ;then
cat >> CMakeLists.txt << EOF
add_library(\${PROJECT_NAME} STATIC \${DIR_SRCS})
EOF
fi

请指点!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值