「view this page in B3 βῆτα server」

Revisions №58291

branch: master 「№58291」
Commited by: Rocco Moretti
GitHub commit link: 「6e6aecdca3d5395c」 「№914」
Difference from previous tested commit:  code diff
Commit date: 2015-11-18 10:23:04

Merge pull request #914 from RosettaCommons/roccomoretti/ninja_updates Change the CMake build to use absolute paths The cmake/ninja build are encountering errors on the test server because updated to the headers aren't being properly reflected in the compilation of the unit test files, leading to the test server to not update the unit test compilation when it should. This appears to be due to issues with the automatic header dependency calculation of CMake. CMake uses the -MM option of gcc and clang to get a list of headers on which the compilation of a particular file depends. This dependency calculation ignores system files, which includes any files found through -isystem paths. To avoid issues with -Werror, we have the external directory set as -isystem includes. This is an issue with the unit test builds, as when the compiler tries to find the ../../../source/test/basic/datacache/HierarchicalDataMap.cxxtest.hh include which is in the auto-generated cxxtest source file, it can also find it under ../../external/dbio/, rather than under ./ This means that any header which is included from the *.cxxtest.hh files are considered to be "system" files, and as such don't show up under the -MM output, meaning that things don't get recompiled if they change. The solution to this is to adjust the CMake build system such that it uses absolute paths for the location of the *.cxxtest.hh files, rather than relative paths. (Note that absolute paths here aren't too much of an issue for relocatability, as CMake already uses absolute paths for a bunch of stuff internally - if you move the directory you need to force a clean compilation anyway.)

...