[CMake] include_directories converting CMAKE_BINARY_DIR into relative path

Russell L. Carter rcarter at esturion.net
Tue Jan 9 19:01:31 EST 2018


Ah well, I figured out the problem, it was located between my
chair and my keyboard.  Everything works perfectly now.  I sure
do love cmake.

Thanks,
Russell

On 01/09/18 15:46, Russell L. Carter wrote:
> Greetings,
> 
> I am trying to generate a platform specific file by copying it from
> the source tree into a specific directory in the separate
> out-of-source build tree.  The file generation works fine.
> 
> When I try the following cmake code:
> 
> set(target_dir ${CMAKE_BINARY_DIR}/nail/platform)
> message("target_dir: ${target_dir}")
> include_directories(${target_dir})
> 
> where message displays:
> 
> target_dir: /home/rcarter/nail/core/build/g++7.Debug/nail/platform
> 
> That's what I want and the generated files exist in that directory.
> 
> However, I get the following error:
> 
> FAILED: nail/CMakeFiles/nail_core.dir/platform/time.cpp.o
> /usr/local/bin/g++7  -Dnail_core_EXPORTS -I../../ -Inail/platform -g -O 
> -std=c++17 -fno-omit-frame-pointer -fstack-protector -Wall -Wextra 
> -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -MD -MT 
> nail/CMakeFiles/nail_core.dir/platform/time.cpp.o -MF 
> nail/CMakeFiles/nail_core.dir/platform/time.cpp.o.d -o 
> nail/CMakeFiles/nail_core.dir/platform/time.cpp.o -c nail/platform/time.cpp
> nail/platform/time.cpp:2:10: fatal error: nail/platform/time.hpp: No 
> such file or directory
> 
> Evidently the include_directories() command is converting the
> the supplied absolute path to a relative path (-Inail/platform).
> 
> What should I do to get that include directory in the
> build tree added correctly to the includes?  I suppose I could
> add it manually to the CXX flags?  What's the best cmake
> friendly way to handle this?
> 
> Thanks,
> Russell


More information about the CMake mailing list