[CMake] CMake & RPM problems

Florent Lagaye florent.lagaye at inrialpes.fr
Tue May 5 07:16:47 EDT 2009


Thanks for the answer. There was really an INCLUDE(CPack) command don't 
know why it didn't get shiped with the mail. I was really using 
UseRPMTools, I changed that.

Here's my new CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)

PROJECT( viewer4d )

SET( VERSION 1.0.0 )

SET( ${PROJECT_NAME}_MAJOR_VERSION 1 )
SET( ${PROJECT_NAME}_MINOR_VERSION 0 )
SET( ${PROJECT_NAME}_PATCH_LEVEL 0 )

SET( PACKAGE_VERSION 
${viewer4d_MAJOR_VERSION}.${viewer4d_MINOR_VERSION}.${viewer4d_PATCH_LEVEL} 
)
SET( CPACK_PACKAGE_VERSION_MAJOR ${viewer4d_MAJOR_VERSION} )
SET( CPACK_PACKAGE_VERSION_MINOR ${viewer4d_MINOR_VERSION} )
SET( CPACK_PACKAGE_VERSION_PATCH ${viewer4d_PATCH_LEVEL} )
SET( CPACK_PACKAGE_VERSION 
${viewer4d_MAJOR_VERSION}.${viewer4d_MINOR_VERSION}.${viewer4d_PATCH_LEVEL} 
)
SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY "A 4D viewer")
SET( CPACK_PACKAGE_VENDOR "INRIA - Florent LAGAYE")
SET( CPACK_GENERATOR "RPM")
SET( CPACK_SOURCE_PACKAGE_FILE_NAME "viewer4d-${VERSION}" CACHE INTERNAL 
"tarball basename" )
SET( CPACK_SOURCE_GENERATOR TGZ )
SET( CPACK_IGNORE_FILES
"~$"
"^.*/\\\\.svn/.*$"
)

INCLUDE( CPack )

FIND_PACKAGE( OpenGL REQUIRED )

FIND_PACKAGE( Qt4 REQUIRED )

SET( QT_USE_QTCORE 1 )
SET( QT_USE_QTGUI 1 )
SET( QT_USE_QTXML 1 )
SET( QT_USE_QTOPENGL 1 )

INCLUDE( ${QT_USE_FILE} )

SET( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )

SET( viewer4d_SRCS
  main.cpp
  Application.h         Application.cpp
  Camera.h              Camera.cpp
  DisplayCamera.h       DisplayCamera.cpp
  Debug.h               Debug.cpp
  Exception.h           Exception.cpp
  Frame.h               Frame.cpp
  Matrix.h
  Mesh.h                Mesh.cpp
  ProgressWindow.h      ProgressWindow.cpp
  Quaternion.h          Quaternion.cpp
  Selectable.h          Selectable.cpp
  Positionable.h        Positionable.cpp
  Sequence.h            Sequence.cpp
  SequenceCollection.h  SequenceCollection.cpp
  Setup.h               Setup.cpp
  StreamDumper.h        StreamDumper.cpp
  Streamer.h            Streamer.cpp
  StreamFile.h          StreamFile.cpp
  StreamFile_0_2.h      StreamFile_0_2.cpp
  Timer.h               Timer.cpp
  ToolBox.h             ToolBox.cpp
  TriState.h            TriState.cpp
  Vector.h              Vector.cpp
  Viewer3d.h            Viewer3d.cpp
  ViewerWindow.h        ViewerWindow.cpp
  Light.h               Light.cpp
)

SET( viewer4d_UIS
  Viewer4dMainWindow.ui
  ProgressWindow.ui
  CameraDock.ui AnimationDock.ui DisplayDock.ui
  MeshDock.ui SequenceDock.ui TextureDock.ui
  LightDock.ui
)

SET( viewer4d_RCS viewer4d.qrc )

SET( viewer4d_MOCS Application.h ViewerWindow.h ProgressWindow.h Light.h 
Selectable.h Positionable.h Viewer3d.h )

QT4_ADD_RESOURCES( viewer4d_SRCS ${viewer4d_RCS} )

QT4_WRAP_CPP( viewer4d_SRCS ${viewer4d_MOCS} )

QT4_WRAP_UI( viewer4d_SRCS ${viewer4d_UIS} )

INCLUDE_DIRECTORIES(
    ${PROJECT_SOURCE_DIR}
    ${PROJECT_BINARY_DIR}
    ${QT_INCLUDE_DIR}
    ${QT_QTXML_INCLUDE_DIR}
    ${QT_QTGUI_INCLUDE_DIR}
    ${QT_QTCORE_INCLUDE_DIR}
    ${QT_QTOPENGL_INCLUDE_DIR}
    ${OPENGL_INCLUDE_DIR}
)

SET( CMAKE_CXX_FLAGS "-Wall" )
SET( CMAKE_CXX_FLAGS_RELEASE "-O3 -DV4D_DEBUG_LVL=2" )
SET( CMAKE_CXX_FLAGS_DEBUG "-g -O0 -DV4D_DEBUG_LVL=3 -DV4D_PROFILING" )
SET( CMAKE_CXX_FLAGS_PROFILE "-pg -O3" )

ADD_EXECUTABLE( viewer4d ${viewer4d_SRCS} )

TARGET_LINK_LIBRARIES( viewer4d
    ${QT_QTXML_LIBRARY_DEBUG}
    ${QT_QTGUI_LIBRARY_DEBUG}
    ${QT_QTCORE_LIBRARY_DEBUG}
    ${QT_QTOPENGL_LIBRARY_DEBUG}
    ${OPENGL_LIBRARY}
)

INSTALL( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../example DESTINATION 
share/viewer4d )
INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/v4d.svg DESTINATION 
share/viewer4d )
INSTALL(TARGETS viewer4d
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)

My command call for Makefile generation:

my_build_dir$ >rm -rf * ; cmake  -DCMAKE_BUILD_TYPE=Release -G "Unix 
Makefiles" ../src
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/lib64/ccache/gcc
-- Check for working C compiler: /usr/lib64/ccache/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/lib64/ccache/c++
-- Check for working CXX compiler: /usr/lib64/ccache/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in 
/usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.5.0
-- Found OpenSSL: /usr/lib64/libssl.so
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
-- Configuring done
-- Generating done
-- Build files have been written to: 
/local_scratch/lagaye/viewer4d/bin.release

Everything seems alright so I launch compilation/packaging process, but 
I get the following error:

my_build_dir$ >make package

[  1%] Generating ui_LightDock.h
[  3%] Generating qrc_viewer4d.cxx
[  5%] Generating moc_Application.cxx
[  7%] Generating moc_ViewerWindow.cxx
[  9%] Generating moc_ProgressWindow.cxx
[ 11%] Generating moc_Light.cxx
[ 13%] Generating moc_Selectable.cxx
[ 15%] Generating moc_Positionable.cxx
[ 17%] Generating moc_Viewer3d.cxx
[ 19%] Generating ui_Viewer4dMainWindow.h
[ 21%] Generating ui_ProgressWindow.h
[ 23%] Generating ui_CameraDock.h
[ 25%] Generating ui_AnimationDock.h
[ 27%] Generating ui_DisplayDock.h
[ 29%] Generating ui_MeshDock.h
[ 31%] Generating ui_SequenceDock.h
[ 33%] Generating ui_TextureDock.h
Scanning dependencies of target viewer4d
[ 35%] Building CXX object CMakeFiles/viewer4d.dir/main.cpp.o
[ 37%] Building CXX object CMakeFiles/viewer4d.dir/Application.cpp.o
[ 39%] Building CXX object CMakeFiles/viewer4d.dir/Camera.cpp.o
[ 41%] Building CXX object CMakeFiles/viewer4d.dir/DisplayCamera.cpp.o
[ 43%] Building CXX object CMakeFiles/viewer4d.dir/Debug.cpp.o
[ 45%] Building CXX object CMakeFiles/viewer4d.dir/Exception.cpp.o
[ 47%] Building CXX object CMakeFiles/viewer4d.dir/Frame.cpp.o
[ 49%] Building CXX object CMakeFiles/viewer4d.dir/Mesh.cpp.o
[ 50%] Building CXX object CMakeFiles/viewer4d.dir/ProgressWindow.cpp.o
[ 52%] Building CXX object CMakeFiles/viewer4d.dir/Quaternion.cpp.o
[ 54%] Building CXX object CMakeFiles/viewer4d.dir/Selectable.cpp.o
[ 56%] Building CXX object CMakeFiles/viewer4d.dir/Positionable.cpp.o
[ 58%] Building CXX object CMakeFiles/viewer4d.dir/Sequence.cpp.o
[ 60%] Building CXX object CMakeFiles/viewer4d.dir/SequenceCollection.cpp.o
[ 62%] Building CXX object CMakeFiles/viewer4d.dir/Setup.cpp.o
[ 64%] Building CXX object CMakeFiles/viewer4d.dir/StreamDumper.cpp.o
[ 66%] Building CXX object CMakeFiles/viewer4d.dir/Streamer.cpp.o
[ 68%] Building CXX object CMakeFiles/viewer4d.dir/StreamFile.cpp.o
[ 70%] Building CXX object CMakeFiles/viewer4d.dir/StreamFile_0_2.cpp.o
[ 72%] Building CXX object CMakeFiles/viewer4d.dir/Timer.cpp.o
[ 74%] Building CXX object CMakeFiles/viewer4d.dir/ToolBox.cpp.o
[ 76%] Building CXX object CMakeFiles/viewer4d.dir/TriState.cpp.o
[ 78%] Building CXX object CMakeFiles/viewer4d.dir/Vector.cpp.o
[ 80%] Building CXX object CMakeFiles/viewer4d.dir/Viewer3d.cpp.o
[ 82%] Building CXX object CMakeFiles/viewer4d.dir/ViewerWindow.cpp.o
[ 84%] Building CXX object CMakeFiles/viewer4d.dir/Light.cpp.o
[ 86%] Building CXX object CMakeFiles/viewer4d.dir/qrc_viewer4d.cxx.o
[ 88%] Building CXX object CMakeFiles/viewer4d.dir/moc_Application.cxx.o
[ 90%] Building CXX object CMakeFiles/viewer4d.dir/moc_ViewerWindow.cxx.o
[ 92%] Building CXX object CMakeFiles/viewer4d.dir/moc_ProgressWindow.cxx.o
[ 94%] Building CXX object CMakeFiles/viewer4d.dir/moc_Light.cxx.o
[ 96%] Building CXX object CMakeFiles/viewer4d.dir/moc_Selectable.cxx.o
[ 98%] Building CXX object CMakeFiles/viewer4d.dir/moc_Positionable.cxx.o
[100%] Building CXX object CMakeFiles/viewer4d.dir/moc_Viewer3d.cxx.o
Linking CXX executable viewer4d
[100%] Built target viewer4d
Run CPack packaging tool...
CPack: Create package using RPM
CPack: Install projects
CPack: - Run preinstall target for: viewer4d
CPack: - Install project: viewer4d
CPack: Compress package
CPack: Finalize package
CPack Error: Problem copying the package: 
/local_scratch/lagaye/viewer4d/bin.release/_CPack_Packages/Linux/RPM/viewer4d-1.0.0-Linux.rpm 
to /local_scratch/lagaye/viewer4d/bin.release/viewer4d-1.0.0-Linux.rpm
CPack Error: Error when generating package: viewer4d
make: *** [package] Erreur 1

Thanks what is it I miss ? I found the following error log in 
"my_build_dir/_CPack_Packages/Linux/RPM/rpmbuild.err" :

+ umask 022
+ cd 
/local_scratch/lagaye/viewer4d/bin.release/_CPack_Packages/Linux/RPM/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
+ umask 022
+ cd 
/local_scratch/lagaye/viewer4d/bin.release/_CPack_Packages/Linux/RPM/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ /usr/lib/rpm/check-buildroot
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
+ /usr/lib/rpm/redhat/brp-compress
/usr/lib/rpm/redhat/brp-compress: line 8: cd: 
/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64: No 
such file or directory
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
+ /usr/lib/rpm/brp-python-bytecompile
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
+ /usr/lib/rpm/redhat/brp-python-hardlink
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
+ /usr/lib/rpm/redhat/brp-java-repack-jars
find: 
`/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64': No 
such file or directory
erreur: Fichier non trouvé par la substitution: 
/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64/*
    Fichier non trouvé par la substitution: 
/home/perception/lagaye/rpmbuild/BUILDROOT/viewer4d-1.0.0-1.x86_64/*


Sorry, my locale is French, so some messages are in French, but I bet 
you're French too ?

Regards,
Florent.

Eric Noulard a écrit :
> 2009/5/5 Florent Lagaye <florent.lagaye at inrialpes.fr>:
>   
>> Hi everybody,
>>
>> I'm a big cmake fan, I use to generate kdevelop projects and makefile.
>> Now that my application as achieved an "acceptable" completion level, I
>> think about deployment.
>>
>> So, I started using CPack from within CMake (2.6) (via my CMakeLists.txt
>> file). But I can't manage to build an rpm package.
>>
>> Here is my CMakeLists.txt file :
>>
>> [code]
>> cmake_minimum_required(VERSION 2.6)
>>
>> PROJECT( viewer4d )
>>
>> SET( VERSION 1.0.0 )
>>
>> SET( ${PROJECT_NAME}_MAJOR_VERSION 1 )
>> SET( ${PROJECT_NAME}_MINOR_VERSION 0 )
>> SET( ${PROJECT_NAME}_PATCH_LEVEL 0 )
>>
>> SET( PACKAGE_VERSION
>> ${viewer4d_MAJOR_VERSION}.${viewer4d_MINOR_VERSION}.${viewer4d_PATCH_LEVEL}
>> )
>> SET( CPACK_PACKAGE_VERSION_MAJOR ${viewer4d_MAJOR_VERSION} )
>> SET( CPACK_PACKAGE_VERSION_MINOR ${viewer4d_MINOR_VERSION} )
>> SET( CPACK_PACKAGE_VERSION_PATCH ${viewer4d_PATCH_LEVEL} )
>> SET( CPACK_PACKAGE_VERSION
>> ${viewer4d_MAJOR_VERSION}.${viewer4d_MINOR_VERSION}.${viewer4d_PATCH_LEVEL}
>> )
>> SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY "A 4D viewer")
>> SET( CPACK_PACKAGE_VENDOR "INRIA - Florent LAGAYE")
>> SET( CPACK_SOURCE_PACKAGE_FILE_NAME "viewer4d-${VERSION}" CACHE INTERNAL
>> "tarball basename" )
>> SET(CPACK_SOURCE_IGNORE_FILES
>>  "~$"
>>  "^${PROJECT_SOURCE_DIR}.*/.svn/"
>> )
>>
>>     
> [...]
>
>   
>> )
>> [/code]
>>     
>
> I didn't see INCLUDE(CPack) in your CMakeLists.txt, I must be there
> in order to make CPack work.
>
> You should INCLUDE(CPack) after your have defined you own
> CPACK_xxxx vars.
>
>   
>> And here is what "make viewer4d_rpm" tells me :
>>
>>     
>
> You are trying to use UseRPMTools.cmake instead of the builtin
> CMake/CPack  2.6 RPM support, see:
>
> http://www.cmake.org/Wiki/CMake:CPackPackageGenerators#RPM_.28Unix_Only.29
>
>   
>> What am I missing here ?
>>     
>
> With CPack 2.6 you should be able to do:
>
> cd /to/build_dir
> cpack -G RPM
>
> or you may set
> SET(CPACK_GENERATOR "TGZ;ZIP;RPM")
>
> or any list of appropriate CPack generator you want to use when launching
>
> make package.
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090505/a238c583/attachment-0001.htm>


More information about the CMake mailing list