[CMake] Confusion with include() relativity

Robert Dailey rcdailey.lists at gmail.com
Thu Sep 5 18:39:44 EDT 2013


I am attaching a sample that reproduces the issue. I'm using CMake
version 2.8.11.2. To reproduce this, just run the 'generate.bat' batch
file from its current directory (WINDOWS ONLY). I have set it up to
generate for Visual Studio 2008, but you can edit the batch file to
change this.

Password to the archive is: cmake

On Thu, Sep 5, 2013 at 5:26 PM, Robert Dailey <rcdailey.lists at gmail.com> wrote:
> I have an interesting structure for my code & build scripts:
>
> root/
>   source/
>     CMakeLists.txt
>     build/
>       CMakeLists.txt
>   cmake/
>     common.cmake
>
> My root CMakeLists.txt is actually in 'root/source/build", and my
> common scripts are in "root/cmake".
>
> From my root CMakeLists.txt file, I do this:
>
> get_filename_component( BUILD_PRODUCT_ROOT ${CMAKE_SOURCE_DIR}/../.. ABSOLUTE )
> set( CMAKE_MODULE_PATH
>     "${BUILD_PRODUCT_ROOT}/cmake"
>     "${BUILD_PRODUCT_ROOT}/cmake/find"
> )
>
> add_subdirectory( ${BUILD_PRODUCT_ROOT}/source source )
>
> Note that the script "root/source/CMakeLists.txt" is where I begin
> defining targets, and it never steps into "build" (to avoid infinite
> recursion).
>
> Later on (still in the root script) I do:
>
> include( common )
>
> This includes "root/cmake/common.cmake" as expected, but inside
> common.cmake when I try to include a file (not a module) relative to
> common.cmake, it says it can't find it. Example:
>
> include( foo/bar/stuff.cmake )
>
> The absolute path for this would be:
>
> root/cmake/foo/bar/stuff.cmake
>
> Naturally I assume that when including a FILE (not a module!) that it
> is relative to the CMAKE_CURRENT_LIST_DIR, which in this case
> correctly displays as "root/cmake".
>
> Can anyone explain why I can't include files from common.cmake? Thanks
> in advance.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cmake-test.7z
Type: application/octet-stream
Size: 626 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130905/80adbbf1/attachment.obj>


More information about the CMake mailing list