You don't generally need to use link-directories - if you're using
imported targets from a *Config.cmake file, the build type choice I
would imagine is automatic (?),
Yes, that is that the former guys wrote and it is really working this easy way now.

and if not you should be passing full
paths to the library files in target_link_libraries, where you can
specify using the debug, optimized, and general keywords.
For external lib not using cmake i will use something like

/TARGET_LINK_LIBRARIES( Project1 debug //F:/Extern////Lib1/Debug/test1.lib//
/       optimized //F:/Extern//Lib1/Release/test1.lib
        )
/

But i have not tested yet. i suggest to add this to the FAQ because i missed it there very much.

Ciao,
   Michael
Ryan

On Thursday, March 25, 2010, Michael Schildt
<michael.schildt at ifn-magdeburg.de 
<http://www.cmake.org/mailman/listinfo/cmake>> wrote:
>/
/>/
/>/ On Thu, Mar 25, 2010 at 12:51 PM, Michael Schildt
/>/ <michael.schildt at ifn-magdeburg.de 
<http://www.cmake.org/mailman/listinfo/cmake>> wrote:
/>>>//
/>/ />>/ On Wed, Mar 24, 2010 at 2:10 PM, John Drescher <drescherjm at gmail.com
/>/ />>/ <http://www.cmake.org/mailman/listinfo/cmake>> wrote:
/>/ />>/ >/ On Wed, Mar 24, 2010 at 1:42 PM, Michael Schildt
/>/ />>/ />/ <michael.schildt at ifn-magdeburg.de
/>/ />>/ <http://www.cmake.org/mailman/listinfo/cmake>> wrote:
/>/ />>/ />>/ Hello,
/>/ />>/ />>/
/>/ />>/ />>/ I use GDCM libaries in one project. Unfurtunally, i couldn't find 
a
/>/ />>/ findGDCM
/>/ />>/ />>/ module and i'm not experienced enough to write one. I have seen 
that
/>/ />>/ GDCM is
/>/ />>/ />>/ used in ITK, so there must be a module like this. GDCM is using 
cmake
/>/ />>/ too,
/>/ />>/ />>/ so inclusion should be easy. But i have problems to link the 
correkt
/>/ />>/ library
/>/ />>/ />>/ version depending on the configuration type.
/>/ />>/ />>/
/>/ />>/ />>/ IF(WIN32)
/>/ />>/ />>/  INCLUDE_DIRECTORIES(C:/Programme/GDCM\ 2.0/include/gdcm-2.0)
/>/ />>/ />>/  IF(CMAKE_BUILD_TYPE MATCHES "Debug")
/>/ />>/ />>/   LINK_DIRECTORIES("C:/Program Files/GDCM/bin/Debug")
/>/ />>/ />>/  ELSE(CMAKE_BUILD_TYPE MATCHES "Debug")
/>/ />>/ />>/   LINK_DIRECTORIES("C:/Program Files/GDCM/bin/Release")
/>/ />>/ />>/  ENDIF(CMAKE_BUILD_TYPE MATCHES "Debug")
/>/ />>/ />>/  SET(GDCM_LIBRARIES gdcmcharls.lib gdcmCommon.lib gdcmDICT.lib
/>/ />>/ gdcmDSED.lib
/>/ />>/ />>/ gdcmexpat.lib gdcmgetopt.lib gdcmIOD.lib gdcmjpeg8.lib 
gdcmjpeg12.lib
/>/ />>/ />>/ gdcmjpeg16.lib gdcmMSFF.lib gdcmopenjpeg.lib gdcmzlib.lib)
/>/ />>/ />>/ ELSE(WIN32)
/>/ />>/ />>/   # Linux
/>/ />>/ />>/   INCLUDE_DIRECTORIES(/usr/include/gdcm-2.0)
/>/ />>/ />>/   SET(GDCM_LIBRARIES gdcmCommon gdcmDICT gdcmDSED gdcmIOD 
gdcmjpeg8
/>/ />>/ />>/ gdcmjpeg12 gdcmjpeg16 gdcmMSFF)
/>/ />>/ />>/ ENDIF(WIN32)
/>/ />>/ />>/
/>/ />>/ />>/ He always includes the Relase Directory. What is a solution for 
this
/>/ />>/ issue?
/>/ />>/ />>/
/>/ />>/ />/
/>/ />>/ />/ Build GDCM from source and it will have the necessary finders. Do 
not
/>/ />>/ />/ INSTALL. Then the usual in your CMakeLists.txt file. Here is an
/>/ />>/ />/ example.
/>/ />>/ />/
/>/ />>/ />/ CMakeLists.txt
/>/ />>/ />/ cmake_minimum_required(VERSION 2.6)
/>/ />>/ />/
/>/ />>/ />/        PROJECT(GDCMImageViewer)
/>/ />>/ />/
/>/ />>/ />/        FIND_PACKAGE(VTK REQUIRED)
/>/ />>/ />/        INCLUDE(${VTK_USE_FILE})
/>/ />>/ />/
/>/ />>/ />/        FIND_PACKAGE(GDCM REQUIRED)
/>/ />>/ />/        INCLUDE(${GDCM_USE_FILE})
/>/ />>/ />/
/>/ />>/ />/        INCLUDE_DIRECTORIES(
/>/ />>/ />/         ${GDCM_SOURCE_DIR}/Utilities/VTK
/>/ />>/ />/        )
/>/ />>/ />/
/>/ />>/ />/        IF(WIN32 AND NOT CYGWIN)
/>/ />>/ />/                ADD_SUBDIRECTORY(getopt)
/>/ />>/ />/                INCLUDE_DIRECTORIES(getopt)
/>/ />>/ />/        ENDIF(WIN32 AND NOT CYGWIN)
/>/ />>/ />/
/>/ />>/ />/        ADD_EXECUTABLE(GDCMImageViewer gdcmviewer.cxx)
/>/ />>/ />/        TARGET_LINK_LIBRARIES(GDCMImageViewer vtkHybrid vtkInfovis
/>/ />>/ vtkWidgets
/>/ />>/ />/ vtkgdcm getopt)
/>/ />>/ />/
/>/ />>/ />/
/>/ />>/ /
/>/ />>/ BTW when cmake-gui complains it can not find GDCM point it to the
/>/ />>/ place where you built gdcm. Also make sure you build all
/>/ />>/ configurations of GDCM that you want in the same build tree. That is
/>/ />>/ why I said do not install. Since install will try to put the binaries
/>/ />>/ in the same folder and since they are named the same it will cause
/>/ />>/ problems.
/>/ />>/
/>/ />>/
/>/ />>/ John
/>/ />>/
/>/ />/
/>/ />/ Hi,
/>/ />/
/>/ />/ thanks for the useful hints, cmake finds the package now. But 
unfurtunally,
/>/ />/ it does not link the library and therefore i get a lot of unresolved
/>/ />/ dependency from gdcm. i replaced my stuff with
/>/ />/
/>/ />/ FIND_PACKAGE(GDCM REQUIRED)
/>/ />/ INCLUDE(${GDCM_USE_FILE})
/>/ />/
/>/ />/ and tested the typical variables
/>/ />/
/>/ />/ MESSAGE(STATUS "Cmake GDCM: using GDCM includes at: 
${GDCM_INCLUDE_DIR}")
/>/ />/ MESSAGE(STATUS "Cmake GDCM: using GDCM libraries: ${GDCM_LIBRARIES}")
/>/ />/ MESSAGE(STATUS "Cmake GDCM: using GDCM libraries: ${GDCM_LIBRARY}")
/>/ />/
/>/ />/ but the are all empty? How can i find out, what is defined by GDCM?
/>/ /
/>/ `cmake --help-module` parses system installed Find*.cmake file,
/>/ however it does not parse *Config.cmake file. You have to look into
/>/ GDCMConfig.cmake and such to understand.
/>/
/>/ Anyway, there is no generic "GDCM_LIBRARIES", you have to specify
/>/ explicitely the name of the desired lib:
/>/
/>/ add_executable(dummy dummy.cxx)
/>/ target_link_libraries(dummy gdcmMSFF)
/>/
/>/ Cheers
/>/ --
/>/ Mathieu
/>/
/>/
/>/
/>/ Hello,
/>/
/>/ i found GDCMconfig.cmake as you mentioned and the definitions there in are 
GDCM_INCLUDE_DIRS and GDCM_LIBRARY_DIRS. But as in the former post i specified the 
needed libraries manually. Thank you all for your help.
/>/
/>/ FIND_PACKAGE(GDCM REQUIRED)
/>/ INCLUDE(${GDCM_USE_FILE})
/>/
/>/ SET(GDCM_LIBRARIES gdcmCommon gdcmDICT gdcmDSED gdcmIOD
/>/    gdcmjpeg8 gdcmjpeg12 gdcmjpeg16 gdcmMSFF
/>/    CACHE STRING "GDCM libraries")
/>/
/>/ MESSAGE(STATUS "Cmake GDCM: using includes at: ${GDCM_INCLUDE_DIRS}")
/>/ MESSAGE(STATUS "Cmake GDCM: using libraries at: ${GDCM_LIBRARY_DIRS}")
/>/ MESSAGE(STATUS "Cmake GDCM: using libraries: ${GDCM_LIBRARYRIES}")
/>/
/>/ TARGET_LINK_LIBRARIES(fileInfo ${GDCM_LIBRARIES})
/>/
/>/ But it is still unclear to me how to provide different link_directories for 
Debug and Release used by MSVC 9.0 on Windows for external libraries not using 
cmake . If i have release and debug libraries with different namens (i.e. 
test1.lib and test1d.lib) i can use something like
/>/
/>/ TARGET_LINK_LIBRARIES( Project1 debug test1d.lib optimized test1.lib)
/>/
/>/ But what if i have i.e. Debug/test1.lib and Release/test1.lib? How do i 
define configuration-type depended LINK_DIRECTORIES?
/>/
/>/ Best reguards,
/>/    Michael
/>/
/>/ _______________________________________________
/>/ Powered by www.kitware.com
/>/
/>/ Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html
/>/
/>/ Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ
/>/
/>/ Follow this link to subscribe/unsubscribe:
/>/ http://www.cmake.org/mailman/listinfo/cmake
/>/
/
--
Ryan Pavlik
HCI Graduate Student
Virtual Reality Applications Center
Iowa State University

rpavlik at iastate.edu <http://www.cmake.org/mailman/listinfo/cmake>
http://academic.cleardefinition.com
Internal VRAC/HCI Site: http://tinyurl.com/rpavlik
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to