Using this example of cmakelists.txt I am getting a linking error for QVTK. I am fairly sure I installed VTK with QT support. Is there any other reason I could be getting a linking error?<br><br>Thanks,<br><br>John<br><br>
<div class="gmail_quote">On Mon, Oct 5, 2009 at 2:56 PM, Wagner Sales <span dir="ltr"><<a href="mailto:wsales@gmail.com">wsales@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi John,<br>
<br>
I have a very simple CMakeLists to do this job, since I need to start<br>
one or more project with these libs at a week. This file basically put<br>
the files and supports resources of Qt if you have, and take care<br>
about dependencies in .h uic generated files.<br>
<br>
Here is:<br>
<br>
PROJECT(SegmentationFramework)<br>
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)<br>
# Find ITK<br>
FIND_PACKAGE(ITK)<br>
IF(NOT ITK_DIR)<br>
MESSAGE(FATAL_ERROR "Please set ITK_DIR")<br>
ENDIF(NOT ITK_DIR)<br>
INCLUDE(${ITK_USE_FILE})<br>
<br>
# Find VTK<br>
FIND_PACKAGE(VTK)<br>
IF(NOT VTK_DIR)<br>
MESSAGE(FATAL_ERROR "Please set VTK_DIR.")<br>
ENDIF(NOT VTK_DIR)<br>
INCLUDE(${VTK_USE_FILE})<br>
<br>
# Find and works only with Qt4 or newer<br>
SET(DESIRED_QT_VERSION 4 CACHE STRING "This project needs Qt4")<br>
INCLUDE(${CMAKE_ROOT}/Modules/FindQt4.cmake )<br>
SET(QT_USE_QTXML true) # I need XML<br>
SET(QT_USE_QTSVG true) # I need SVG<br>
SET(QT_USE_QTOPENGL true) # I need OpenGL<br>
<br>
INCLUDE(${QT_USE_FILE})<br>
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})<br>
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})<br>
# put in the new group all files are derived from a .ui gui file<br>
SET( qtcpps<br>
)<br>
# commom cpps ( qt and others )<br>
SET(cpps<br>
main.cpp)<br>
<br>
<br>
# qtheaders: haves an qobject macro<br>
SET( qtheaders<br>
)<br>
# ui files<br>
SET( uis<br>
QPoluxSegmentationFilterWidgetBase.ui<br>
QPoluxSmoothWidgetParametersBase.ui)<br>
<br>
# commom headers - not Qt objects or widgets<br>
SET( headers<br>
)<br>
#put in this group the qrc files, if haves<br>
SET(QtApp_RCCS )<br>
QT4_ADD_RESOURCES(rccsrcs ${QtApp_RCCS})<br>
QT4_WRAP_UI(uiheaders ${uis})<br>
QT4_WRAP_CPP(mocsrcs ${qtheaders})<br>
<br>
ADD_DEFINITIONS(-DQT_GUI_LIBS -DQT_CORE_LIB)<br>
SET_SOURCE_FILES_PROPERTIES(${qtcpps} PROPERTIES<br>
OBJECT_DEPENDS "${uiheaders}")<br>
if(COMMAND cmake_policy)<br>
<div class="im"> cmake_policy(SET CMP0003 NEW)<br>
endif(COMMAND cmake_policy)<br>
<br>
</div>ADD_EXECUTABLE(myexec ${cpps} ${mocsrcs} ${rccsrcs} ${qtcpps} )<br>
<br>
TARGET_LINK_LIBRARIES( myexec<br>
QVTK<br>
${QT_LIBRARIES}<br>
vtkRendering<br>
vtkGraphics<br>
vtkIO<br>
vtkCommon<br>
${ITK_LIBRARIES}<br>
)<br>
<br>
2009/10/5 John Drescher <<a href="mailto:drescherjm@gmail.com">drescherjm@gmail.com</a>>:<br>
<div><div></div><div class="h5">> On Mon, Oct 5, 2009 at 12:56 PM, John Durkin <<a href="mailto:jrd5084@psu.edu">jrd5084@psu.edu</a>> wrote:<br>
>> John,<br>
>><br>
>> I appreciate you setting aside some time to help me out. Perhaps most of my<br>
>> problems stem from my lack of understanding of CMake and its syntax, but<br>
>> would you have a simpler example of a CMakeLists.txt that enable the<br>
>> compilation of .ui files and links ITK, VTK, and QT into a solution. I<br>
>> tried working with the example you sent me but I'm not positive what to<br>
>> delete, change, or keep. This guessing game is very inefficient.<br>
>><br>
><br>
> Here is a much simpler example. This project is just a simple<br>
> executable and does not have all the macros and internal libraries.<br>
><br>
> PROJECT(CropDICOMImages)<br>
><br>
> cmake_minimum_required(VERSION 2.6 FATAL_ERROR)<br>
><br>
> set (CropDICOMImages_VERSION_MAJOR 0)<br>
> set (CropDICOMImages_VERSION_MINOR 1)<br>
> set (CropDICOMImages_VERSION_PATCH 0)<br>
><br>
> option (PACKAGE_FOR_INSTALL "Package CropDICOMImages for installation." ON)<br>
><br>
> IF(WIN32)<br>
> CMAKE_MINIMUM_REQUIRED(VERSION 2.5 FATAL_ERROR)<br>
> SET(CMAKE_CXX_FLAGS "/WL /GR /EHsc" )<br>
> ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)<br>
> ENDIF(WIN32)<br>
><br>
> ADD_DEFINITIONS(-DNEED_WL_FILTER)<br>
><br>
> IF(COMMAND cmake_policy)<br>
> cmake_policy(SET CMP0003 NEW)<br>
> endif(COMMAND cmake_policy)<br>
><br>
> SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE INTERNAL<br>
> "Single output directory for building all libraries.")<br>
> SET (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE INTERNAL<br>
> "Single output directory for building all executables.")<br>
><br>
> FIND_PACKAGE( Boost REQUIRED )<br>
> FIND_PACKAGE( Qt4 REQUIRED )<br>
> FIND_PACKAGE( ITK REQUIRED )<br>
> FIND_PACKAGE( VTK REQUIRED )<br>
><br>
> INCLUDE( ${ITK_USE_FILE} )<br>
> INCLUDE( ${VTK_USE_FILE} )<br>
><br>
> FIND_PATH(ITK_VTK_GLUE_DIR "CMakeLists.txt" PATHS<br>
> ${ITK_SOURCE_DIR}/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue)<br>
> INCLUDE_DIRECTORIES(${ITK_VTK_GLUE_DIR}/src)<br>
><br>
> INCLUDE_DIRECTORIES( ${QT_INCLUDE_DIR} . Include)<br>
><br>
> INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} )<br>
><br>
> INCLUDE( ${QT_USE_FILE} )<br>
> SET( UPMC_CROP_SRCS<br>
> ./src/main.cxx<br>
> ./src/mainwindow.cxx<br>
> ./src/textwidget.cxx<br>
> ./src/CropImage.cxx<br>
> )<br>
><br>
> SET( UPMC_CROP_MOC_HDR<br>
> ./Include/mainwindow.h<br>
> ./Include/textwidget.h<br>
> )<br>
><br>
> SET( UPMC_CROP_HDRS<br>
> ./Include/CropImage.h<br>
> )<br>
><br>
> # some .ui files<br>
> SET( UPMC_CROP_UIS<br>
><br>
> )<br>
><br>
> # and finally an resource file<br>
> SET( UPMC_CROP_RCS<br>
> ./rc/CropDICOMImages.qrc<br>
> )<br>
><br>
> # this command will generate rules that will run rcc on all files from<br>
> UPMC_CROP_RCS<br>
> # in result UPMC_CROP_RC_SRCS variable will contain paths to files<br>
> produced by rcc<br>
> QT4_ADD_RESOURCES( UPMC_CROP_RC_SRCS ${UPMC_CROP_RCS} )<br>
><br>
> # and finally this will run moc:<br>
> QT4_WRAP_CPP( UPMC_CROP_MOC_SRCS ${UPMC_CROP_MOC_HDR} )<br>
><br>
> # this will run uic on .ui files:<br>
> QT4_WRAP_UI( UPMC_CROP_UI_HDRS ${UPMC_CROP_UIS} )<br>
><br>
> LINK_LIBRARIES ( CropDICOMImages ${QT_LIBRARIES} ITKCommon<br>
> ITKBasicFilters ITKIO QVTK vtkCommon<br>
> )<br>
><br>
> ADD_EXECUTABLE( CropDICOMImages ${UPMC_CROP_SRCS}<br>
> ${UPMC_CROP_MOC_SRCS} ${UPMC_CROP_HDRS}<br>
> ${UPMC_CROP_MOC_HDR} ${UPMC_CROP_RC_SRCS} ${UPMC_CROP_UI_HDRS}<br>
> )<br>
><br>
> #########################################################################################<br>
><br>
> install(TARGETS CropDICOMImages<br>
> RUNTIME<br>
> DESTINATION bin<br>
> COMPONENT Applications<br>
> )<br>
><br>
> #########################################################################################<br>
><br>
> IF(PACKAGE_FOR_INSTALL)<br>
><br>
> SET(CPACK_PACKAGE_VERSION_MAJOR ${CropDICOMImages_VERSION_MAJOR})<br>
> SET(CPACK_PACKAGE_VERSION_MINOR ${CropDICOMImages_VERSION_MINOR})<br>
> SET(CPACK_PACKAGE_VERSION_PATCH ${CropDICOMImages_VERSION_PATCH})<br>
><br>
><br>
> IF(UNIX AND NOT APPLE)<br>
> INSTALL(TARGETS HyvesDesktop<br>
> DESTINATION bin<br>
> )<br>
> FOREACH(LIB QtCore QtXml QtTest QtGui QtNetwork QtScript)<br>
> INSTALL(FILES<br>
> "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"<br>
> RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"<br>
> DESTINATION bin<br>
> )<br>
> ENDFOREACH(LIB)<br>
> ENDIF(UNIX AND NOT APPLE)<br>
><br>
> IF(WIN32)<br>
> SET(CPACK_NSIS_COMPRESSOR "/SOLID lzma")<br>
> SET(CPACK_PACKAGE_EXECUTABLES "CropDICOMImages" "CropDICOMImages")<br>
><br>
> INSTALL(FILES<br>
> "${QT_LIBRARY_DIR}/QtCore${QT_VERSION_MAJOR}.dll"<br>
> "${QT_LIBRARY_DIR}/QtXml${QT_VERSION_MAJOR}.dll"<br>
> "${QT_LIBRARY_DIR}/QtTest${QT_VERSION_MAJOR}.dll"<br>
> "${QT_LIBRARY_DIR}/QtGui${QT_VERSION_MAJOR}.dll"<br>
> "${QT_LIBRARY_DIR}/QtNetwork${QT_VERSION_MAJOR}.dll"<br>
> "${QT_LIBRARY_DIR}/QtScript${QT_VERSION_MAJOR}.dll"<br>
> DESTINATION bin<br>
> COMPONENT Applications<br>
> )<br>
> ENDIF(WIN32)<br>
><br>
> set(CPACK_COMPONENTS_ALL Applications)<br>
><br>
> INCLUDE(CPack)<br>
> ENDIF(PACKAGE_FOR_INSTALL)<br>
</div></div>> _______________________________________________<br>
> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
><br>
> Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
><br>
</blockquote></div><br>