CMakeLists.txt, pc, RPM spec Template for shared library

工程结构:

mysharedlib/

               packaging/

                        - mysharedlib.spec

               include/

                        - mysharedlib.h

               src/

                       - mysharedlib.c

               - CMakeLists.txt

               - mysharedlib.pc.in

mysharedlib.spec

Name:       mysharedlib
Summary:    My shared library
Version:    0.0.1
Release:    1
Group:      System/libraries
License:    Flora License
Source0:    %{name}-%{version}.tar.gz
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
BuildRequires:  cmake
BuildRequires:  pkgconfig(gtk+-2.0)

%description
Describe what your library used for.

%package devel
Summary:  My shared library
Group:   Development

%description devel
my shared library development files

%prep
%setup -q

%build
%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DVERSION=%{version}
make %{?jobs:-j%jobs}

%install
rm -rf %{buildroot}
%make_install

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files
%defattr(-,root,root,-)
%{_libdir}/*.so.*

%files devel
%defattr(-,root,root,-)
%{_prefix}/include/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/%{name}.pc

CMakeList.txt内容

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(mysharedlib)

SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(LIBDIR "${PREFIX}/lib")
SET(INCLUDEDIR "${PREFIX}/include/mysharedlib")

IF(NOT DEFINED VERSION)
	SET(VERSION "0.0.1")
ENDIF(NOT DEFINED VERSION)

#ADD_DEFINITIONS("-DPROVIDERDIR=\"${PROVIDERDIR}\"")
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)

INCLUDE(FindPkgConfig)
pkg_check_modules(PKGS REQUIRED gtk+-2.0)

FOREACH(FLAG ${PKGS_CFLAGS})
	SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${FLAG}")
ENDFOREACH(FLAG)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall")

SET(SRCS
	src/mysharedlib.c)

ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PKGS_LDFLAGS} ${EXTRA_LDFLAGS})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${CFLAGS}")
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION})

CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)

INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR})
INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/mysharedlib.h DESTINATION ${INCLUDEDIR})
INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIBDIR}/pkgconfig)


mysharedlib.pc.in

prefix=@PREFIX@
exec_prefix=@PREFIX@
libdir=@LIBDIR@
includedir=@INCLUDEDIR@

Name: mysharedlib
Description: my shared library
Version: @VERSION@
Requires.private: gtk+-2.0
Libs: -L${libdir} -l@PROJECT_NAME@
Cflags: -I${includedir}


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值