Hi Mike,
I'm back to this topic because the second solution create some problem with 
qt-creator parser of cmake project. If I import the project I have no source 
file loaded so the solution is not ok for me.
The first solution,  "create the IMPORTED targets myself", means that I have to 
put something like the code below in my main CMakeList.txt?

#QXmppClient.cmake:
# Generated by CMake 2.8.0

IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
   MESSAGE(FATAL_ERROR "CMake >= 2.6.0 required")
ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
CMAKE_POLICY(PUSH)
CMAKE_POLICY(VERSION 2.6)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------

# Commands may need to know the format version.
SET(CMAKE_IMPORT_FILE_VERSION 1)

# Create imported target QXmppClient
ADD_LIBRARY(QXmppClient STATIC IMPORTED)

# Load information for each installed configuration.
GET_FILENAME_COMPONENT(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
FILE(GLOB CONFIG_FILES "${_DIR}/QXmppClient-*.cmake")
FOREACH(f ${CONFIG_FILES})
  INCLUDE(${f})
ENDFOREACH(f)

# Commands beyond this point should not need to know the version.
SET(CMAKE_IMPORT_FILE_VERSION)
CMAKE_POLICY(POP)



#QXmppClient-release.cmake 
#----------------------------------------------------------------
# Generated CMake target import file for configuration "Release".
#----------------------------------------------------------------

# Commands may need to know the format version.
SET(CMAKE_IMPORT_FILE_VERSION 1)

# Compute the installation prefix relative to this file.
GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
GET_FILENAME_COMPONENT(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)

# Import target "QXmppClient" for configuration "Release"
SET_PROPERTY(TARGET QXmppClient APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
SET_TARGET_PROPERTIES(QXmppClient PROPERTIES
  IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
  IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE 
"/devel/BIN/v4.6.1-git-phonon-dbg-release/lib/QtGui.framework;-framework 
Carbon;-framework 
AppKit;/devel/BIN/v4.6.1-git-phonon-dbg-release/lib/QtXml.framework;/devel/BIN/v4.6.1-git-phonon-dbg-release/lib/QtNetwork.framework;/devel/BIN/v4.6.1-git-phonon-dbg-release/lib/QtCore.framework;/usr/lib/libz.dylib;-framework
 ApplicationServices"
  IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libQXmppClient.a"
  )

# Cleanup temporary variables.
SET(_IMPORT_PREFIX)

# Commands beyond this point should not need to know the version.
SET(CMAKE_IMPORT_FILE_VERSION)


On Mar 17, 2010, at 13:41 , Michael Wild wrote:

> 
> On 17. Mar, 2010, at 13:17 , Nicola Brisotto wrote:
> 
>> Hi!
>> I'm building a project that require a 3rd party library libqxmpp. Both 
>> project uses cmake 
>> I want to build libqxmpp with ExternalProject_add, this the code I use:
>> 
>> ExternalProject_add(
>>      libqxmpp
>>      #no download, i'm using git submodule
>>      DOWNLOAD_COMMAND ""
>>      CMAKE_ARGS 
>> -DQT_QMAKE_EXECUTABLE=/devel/BIN/v4.6.1-git-phonon-dbg-release/bin/qmake 
>> -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
>>      SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/3rdparty/qxmpp-read-only-git/source
>> )
>> 
>> The problem arise when I try to import a target from libqxmpp adding this to 
>> my project CMakeLists.txt:
>> #Import libQXmppClient 
>> include(${CMAKE_BINARY_DIR}/include/QXmppClient/QXmppClient.cmake)
>> 
>> Cmake cannot find QXmppClient.cmake because it will be created when I'll 
>> build the project.
>> How can I solve this problem? Are there better solution to build and link an 
>> external project?
>> 
>> This is the libqxmpp snippet that export the target:
>> 
>> INSTALL(TARGETS QXmppClient EXPORT QXmppClient DESTINATION lib)
>> INSTALL(EXPORT QXmppClient DESTINATION include/QXmppClient )
>> 
>> Nicola Brisotto
>> vcard
> 
> There are two ways of getting around this:
> 
> 1) create the IMPORTED targets yourself.
> 
> 2) also build your main project wit a ExternalProject_Add and drive the whole 
> thing from a "master-CMakeLists.txt"
> 
> The first one is probably easier to set up, but requires you to guess the 
> installation names and paths correctly. The second option requires you to 
> restructure your whole build system and adds considerable complexity due to 
> the communication between your master-project and the external projects. For 
> this communication I'd try the following:
> 
> - In the master project do all the feature-detection and setting of cache 
> variables (such as options etc)
> - Write a cache-initializer script to the binary tree
> - Do all the ExternalProject_Add calls and specify the cache-initializer 
> script with the -C option in CMAKE_ARGS
> 
> HTH
> 
> Michael

Nicola Brisotto
vcard

_______________________________________________
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