Hi,

I'm seeing a weird issue with a large project: KDevelop. It was reorganised 
recently but I think that's what exposes the issue, rather than causing it.
My workflow puts both source and out-of-source build directories rather deep in 
a dedicated "playground"; for convenience I create symlinks to the parent of 
both directories in one of my own work directories under my $HOME:

%> ls -l kdevd-lnx-work
lrwxrwxrwx 1 bertin bertin 92 Sep  5 15:18 kdevld-lnx-work -> 
/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work

As long as I chdir directly into that "hidden" build.dir, invoke cmake and then 
make from there things are fine. Problems occur though when I change something 
in one of the project's CMakeLists.txt files, chdir into the build.dir via the 
symlink and then issue a make without running cmake by hand.

Consider the example below where I tried to do partial rebuild (something 
that's always worked reliably for me, a feature I really appreciate with 
cmake!). Evidently make is being executed in the actual directory, as shown by 
the output from `pwd` just underneath the `CD` line. Somewhere during the 
snipped part (which I don't have anymore) cmake was called automatically    and 
that's where the symlink must have found its way into the 
Notice how the failing build of iplugin.cpp uses search paths that include the 
link that don't work with the relative include paths generated by the moc 
compiler. 

How can happen, for all I can tell cmake has no way of knowing about the 
symlink?!
FWIW, it's not something I can reproduce easily.

%> where CD
CD is aliased to (cd  !:^ ; !:2*)
%> CD kdevld-lnx-work/build/plugins/ wmake
### now in 
/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/build/plugins
### make -w
### Sun Sep 17 20:32:06 CEST 2017
make: Entering directory 
`/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/build/plugins'
<SNIP>
[  0%] Building CXX object 
kdevplatform/interfaces/CMakeFiles/KDevPlatformInterfaces.dir/iplugin.cpp.o
cd 
/home/bertin/work/src/Scratch/KDE/KF5/kdevld-lnx-work/build/kdevplatform/interfaces
 && /opt/local/bin/ccache /opt/local/bin/clang++-mp-4.0  -DKCOREADDONS_LIB 
-DKDevPlatformInterfaces_EXPORTS -DQT_CORE_LIB -DQT_DBUS_LIB 
-DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050500 -DQT_GUI_LIB 
-DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_NO_SIGNALS_SLOTS_KEYWORDS 
-DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_USE_QSTRINGBUILDER 
-DQT_WIDGETS_LIB -DQT_XML_LIB -DTRANSLATION_DOMAIN=\"kdevplatform\" 
-D_GNU_SOURCE -D_LARGEFILE64_SOURCE 
-I/home/bertin/work/src/Scratch/KDE/KF5/kdevld-lnx-work/build/kdevplatform/interfaces
 
-I/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/interfaces
 
-I/home/bertin/work/src/Scratch/KDE/KF5/kdevld-lnx-work/build/kdevplatform/interfaces/KDevPlatformInterfaces_autogen/include
 
-I/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5
 -I
 /home/bertin/work/src/Scratch/KDE/KF5/kdevld-lnx-work/build 
-I/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform
 -I/home/bertin/work/src/Scratch/KDE/KF5/kdevld-lnx-work/build/kdevplatform 
-isystem /opt/local/include/KF5/KParts -isystem /opt/local/include/KF5 -isystem 
/opt/local/include/KF5/KIOWidgets -isystem /opt/local/include/KF5/KIOCore 
-isystem /opt/local/include/KF5/KCoreAddons -isystem /opt/local/include/qt5 
-isystem /opt/local/include/qt5/QtCore -isystem 
/opt/local/share/qt5/mkspecs/linux-g++-64 -isystem 
/opt/local/include/KF5/KService -isystem /opt/local/include/KF5/KConfigCore 
-isystem /opt/local/include/KF5/KJobWidgets -isystem 
/opt/local/include/qt5/QtWidgets -isystem /opt/local/include/qt5/QtGui -isystem 
/opt/local/include/qt5/QtNetwork -isystem /opt/local/include/KF5/KCompletion 
-isystem /opt/local/include/KF5/KWidgetsAddons -isystem 
/opt/local/include/KF5/KXmlGui -isystem /opt/local/include/qt5/QtDBu
 s -isystem /opt/local/include/qt5/QtXml -isystem 
/opt/local/include/KF5/KConfigWidgets -isystem /opt/local/include/KF5/KCodecs 
-isystem /opt/local/include/KF5/KConfigGui -isystem 
/opt/local/include/KF5/KAuth -isystem /opt/local/include/KF5/KTextWidgets 
-isystem /opt/local/include/KF5/SonnetUi -isystem /opt/local/include/KF5/KI18n 
-isystem /opt/local/include/KF5/KTextEditor  -Ofast -g -DNDEBUG -std=c++11 -m64 
-std=c++0x -fno-operator-names -fno-exceptions -DQT_NO_EXCEPTIONS 
-Wno-gnu-zero-variadic-macro-arguments -Wall -Wextra -Wcast-align 
-Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef 
-Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla -Wdate-time 
-fPIC -fvisibility=hidden -fvisibility-inlines-hidden   
-Wno-missing-field-initializers -Werror=undefined-bool-conversion 
-Werror=tautological-undefined-compare -Wdocumentation 
-Wno-gnu-zero-variadic-macro-arguments -pedantic -fPIC -std=gnu++11 -o 
CMakeFiles/KDevPlatformInterfaces.dir/iplugin.cpp.o 
 -c 
/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/interfaces/iplugin.cpp
In file included from 
/opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/interfaces/iplugin.cpp:207:
/home/bertin/work/src/Scratch/KDE/KF5/kdevld-lnx-work/build/kdevplatform/interfaces/KDevPlatformInterfaces_autogen/include/moc_iplugin.cpp:9:10:
 fatal error: 
      '../../../../../../kdevelop-git-5/kdevplatform/interfaces/iplugin.h' file 
not found
#include "../../../../../../kdevelop-git-5/kdevplatform/interfaces/iplugin.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** 
[kdevplatform/interfaces/CMakeFiles/KDevPlatformInterfaces.dir/iplugin.cpp.o] 
Error 1


Thanks,
R.
-- 

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://public.kitware.com/mailman/listinfo/cmake

Reply via email to