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

来源:互联网 发布:赌博网站源码下载 编辑:程序博客网 时间:2024/05/16 07:47

工程结构:

mysharedlib/

               packaging/

                        - mysharedlib.spec

               include/

                        - mysharedlib.h

               src/

                       - mysharedlib.c

               - CMakeLists.txt

               - mysharedlib.pc.in

mysharedlib.spec

Name:       mysharedlibSummary:    My shared libraryVersion:    0.0.1Release:    1Group:      System/librariesLicense:    Flora LicenseSource0:    %{name}-%{version}.tar.gzRequires(post): /sbin/ldconfigRequires(postun): /sbin/ldconfigBuildRequires:  cmakeBuildRequires:  pkgconfig(gtk+-2.0)%descriptionDescribe what your library used for.%package develSummary:  My shared libraryGroup:   Development%description develmy shared library development files%prep%setup -q%build%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DVERSION=%{version}make %{?jobs:-j%jobs}%installrm -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(SRCSsrc/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: mysharedlibDescription: my shared libraryVersion: @VERSION@Requires.private: gtk+-2.0Libs: -L${libdir} -l@PROJECT_NAME@Cflags: -I${includedir}
0 0
原创粉丝点击