您的位置:首页 > 产品设计 > 产品经理

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

2015-04-30 11:40 483 查看
工程结构:

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}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: