本文共 2392 字,大约阅读时间需要 7 分钟。
工程结构:
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(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: mysharedlibDescription: my shared libraryVersion: @VERSION@Requires.private: gtk+-2.0Libs: -L${libdir} -l@PROJECT_NAME@Cflags: -I${includedir}
转载地址:http://ujuqi.baihongyu.com/