[CMake] Library in different location according to its version!

Benoit benpaka.spam at gmail.com
Mon Jun 15 05:58:03 EDT 2009


Hello,

I'm using the different version of the OpenCV library and i would like to
make it easy to switch from one to another by changing its path in
cmake-gui.
Howerver, it seems that keeping the value in the cache make this impossible!

here a sample of my code:

IF(NOT OpenCV_FOUND)

SET (OpenCV_POSSIBLE_ROOT_DIRS
"${OpenCV_ROOT_DIR}"
"$ENV{ProgramFiles}/OpenCV"
"/usr/local"
"/usr"
)


FIND_PATH(OpenCV_ROOT_DIR_FOUND
  NAMES
  cv/include/cv.h     # windows
  include/opencv/cv.h # linux, trunk
  include/cv/cv.h
  include/cv.h
  PATHS ${OpenCV_POSSIBLE_ROOT_DIRS})

SET(OpenCV_ROOT_DIR ${OpenCV_ROOT_DIR_FOUND} CACHE PATH "Set OpenCV root dir
if you need to use one particular"  FORCE)

...

Then, the rest of the code use FIND_PATH and FIND_LIBRARY command
with PATHS ${OpenCV_ROOT_DIR} options.

For example:
FIND_LIBRARY(OpenCV_CV_LIBRARY
  NAMES cv cv100 cv110
  PATHS ${OpenCV_ROOT_DIR}
  PATH_SUFFIXES "lib"
  NO_DEFAULT_PATH)



And if all the necessary component are found I use, SET(OpenCV_FOUND ON
CACHE BOOL "Tag If the openCV library has been find" FORCE)



This work correctly when OpenCV is at default location (/usr/ under linux,
$ENV{ProgramFiles}/OpenCV under windows).
However, If want to override this path by another one: I first set
OpenCV_FOUND to false, and change the OpenCV_ROOT_DIR, then i reload the
variable using Configure Option in Cmake. But this piece of code doesn't
work and my variable stay unchanged! Someone can tell me where i did wrong
(I think is using cache variable, but i don't really know how to handle it).

Thanks in advance for your help!


--
Benoit RAT
www.neub.co.nr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090615/c1bb2ee4/attachment.htm>


More information about the CMake mailing list