[CMake] restricting Qt include and library linking to 1 library/project

Clinton Stimpson clinton at elemtech.com
Thu Dec 31 11:07:43 EST 2009


If you have multiple directories with different Qt dependencies, you can do:
find_package(Qt4 REQUIRED)
in the top directory,
then each sub directory can do something like
set(QT_USE_QTOPENGL 1)
include(${QT_USE_FILE})

But in your case, its only lib3, so just do it in that CMakeLists.txt file.

Clint

On Dec 31, 2009, at 6:45 AM, Hicham Mouline wrote:

> Hello,
> 
> My toplevel CMakeLists.txt looks like:
> 
> ----------------------------------------------------------------------------
> --------
> PROJECT(...)
> 
> CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
> 
> # Openmp
> FIND_PACKAGE(OpenMP)
> IF(OPENMP_FOUND)
>  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
> ENDIF()
> 
> # Boost
> FIND_PACKAGE(Boost)
> IF(Boost_FOUND)
>    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
> ENDIF()
> 
> # Qt
> FIND_PACKAGE(Qt4 4.6.0 COMPONENTS QtCore QtGui QtOpenGL REQUIRED)
> INCLUDE(${QT_USE_FILE})
> 
> INCLUDE_DIRECTORIES(AFTER ${CMAKE_CURRENT_SOURCE_DIR})
> 
> ADD_SUBDIRECTORY(common)
> ADD_SUBDIRECTORY(lib1)
> ADD_SUBDIRECTORY(lib2)
> ADD_SUBDIRECTORY(lib3)
> ADD_SUBDIRECTORY(main)
> ----------------------------------------------------------------------------
> --------
> 
> 
> Using QT_USE_FILE includes Qt headers for all of common, lib1, lib2, lib3.
> How can I include and link Qt only for lib3?
> 
> Lib3's CMakeLists.txt looks like:
> 
> ADD_LIBRARY(lib3 STATIC #cpps hpps ipps)
> 
> ADD_DEPENDENCIES(lib3 common)
> 
> TARGET_LINK_LIBRARIES(lib3 ${QT_LIBRARIES})
> 
> Rds,
> 
> _______________________________________________
> 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



More information about the CMake mailing list