I'm using cmake version 2.8.12.1 and have just encountered an issue with my
cmake setup where I was using the [Project name]_SOURCE_DIR variable in an
include_directories command and it was being ignored. In my top level
CMakeLists.txt I had:
project(blah)
add_subdirectory(foo)
add_subdirectory(...)
...
add_subdirectory(bar)
and in the CMakeLists.txt in the foo directory:
include_directories(${bar_SOURCE_DIR})
The project failed to build because the foo project couldn't find header
files located in the bar project source directory. The fix was to move the
add_subdirectory(bar) before the add_subdirectory(foo) command. The
interesting thing is that this setup only caused an error when doing a
clean build from scratch. It looks like it only fails after a clean start
and a single run of the cmake generator. If you run cmake-gui and
configure more than once, as you may well do if you need to set some
options, then it appears to get the correct value for ${bar_SOURCE_DIR}.
Are the [Project name]_SOURCE_DIR variables being automatically stored in
the cmake cache, as that would explain what I am seeing ? I would expect
the above scenario to consistently fail every time due to the missing
header files. Having it only fail the first time and then work after
subsequent configure/generate steps is confusing. Is this a bug, or are
there occasions when this is desirable behaviour ?
--
Glenn
P.S. In an ideal world I'd like to see the expansion of the [Project
name]_SOURCE_DIR variables be deferred until after all the CMakeLists.txt
files have been read in so that the order doesn't matter, but I'm guessing
that isn't going to happen :-)
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake