[CMake] Find_package: general question
Vincent Garcia
vincent.garcia at inria.fr
Fri Jan 21 08:59:17 EST 2011
Dear CMake users,
I have this BIG project which has tons of subdirectories (many levels).
In each (final) subdirectory, I create targets (executables and libraires).
So I have my top level CMakeLists.txt and one CMakeLists.txt file (which is also a project) in each subdirectory.
Everything compiles just fine!
My question is a general CMake question and is the following:
Imagine I can use ITK in my project. To do that, in the top level CMakeLists.txt I define a variable USE_ITK.
If ITK is used, I search for it and I include useful files:
OPTION(USE_ITK "If ON, search for Insight Toolkit package" OFF)
IF(USE_ITK)
FIND_PACKAGE(ITK)
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE})
ELSE(ITK_FOUND)
MESSAGE(FATAL_ERROR "ITK not found. Please set ITK_DIR.")
ENDIF(ITK_FOUND)
ELSE(USE_ITK)
SET(ITK_FOUND OFF)
ENDIF(USE_ITK)
Now, if one subdirectory's project uses ITK, I have the following code (in the subdir's CMakeLists.txt):
FIND_PACKAGE( ITK )
IF( NOT ITK_FOUND )
MESSAGE( "Project ${PROJECT_NAME} requires ITK and ITK was not found. ${PROJECT_NAME} will not be built." )
RETURN()
ENDIF()
INCLUDE( ${ITK_USE_FILE} )
As you can see, find_package(ITK) and INCLUDE( ${ITK_USE_FILE} ) are at least called twice (in fact much more).
Is there any performance issue the method describe above?
Since it's not my code and since i'm a CMake newbee, I'd like to understand if this is normal.
I would say that this should be done once in the top level CMakeLists.txt.
In the subdirs' CMakeLists, we should use only ITK_FOUND to decide if we build the target or not.
Some people of my team agree and some don't.
What is the best way to proceed?
Many thanks!
Vincent
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110121/e7be0433/attachment.htm>
More information about the CMake
mailing list