<div dir="ltr"><div><div><div>Hello cmake users,<br><br>I'm trying to convert a big project from make to cmake, and I'm seeing paths like<br><br>        /home/lode/prj/test/cmake/ext/build/lib1/CMakeFiles/lib1.dir/home/lode/prj/test/cmake/ext/prj2/src <br>
</div><div><br>where I would want to see<br><br>        /home/lode/prj/test/cmake/ext/build/lib1/CMakeFiles/lib1.dir/prj2/src <br></div><div><br>ie. I do not want the base directory repeated in the generated paths.<br></div>
<div><br></div><div>I can see that it's because of the "../" in the CMakeLists, but is there a way of preventing this?<br></div><div>(I'll be building on windows, and the source dirs can have quite long names)<br>
</div><div><br></div><div>I had hoped that "set(CMAKE_SOURCE_DIR /home/lode/prj/test/cmake/ext)" would do this for me,<br></div><div>as all files I will be using are below this folder, but the "top-level-CMakeLists is not in the "top-level directory...<br>
</div><div><br><br></div><div>The structure I am trying to implement is illustrated below. I have the following files:<br><br>prj1/mak/CMakeLists.txt<br>prj1/src/main1.c<br>prj2/mak/CMakeLists.txt<br>prj2/src/lib1.c<br></div>
<div><br>with this content:<br><br>========== prj1/mak/CMakeLists.txt ==========<br>add_subdirectory(../../prj2/mak lib1)<br><br>link_libraries(lib1)<br><br>add_executable(main1 ../src/main1.c)<br>========== prj1/src/main1.c ==========<br>
int main(int argc, char* argv[]) {<br>  f1();<br>}<br>========== prj2/mak/CMakeLists.txt ==========<br>add_library(lib1 ../src/lib1.c)<br>========== prj2/src/lib1.c ==========<br>int f1() {<br>  return 0;<br>}<br>========== ==========<br>
<br></div><div>now when building in "/home/lode/prj/test/cmake/ext"<br><div><br><br></div>using cmake, as follows:<br><br></div><div>mkdir build<br></div><div>cd build<br></div>cmake ../prj1/mak<br></div><br></div>
I get sub-directories that include the full path of the top of my source tree...<br><div><br>find lib1<br><div><br>lib1/<br>lib1/CMakeFiles<br>lib1/CMakeFiles/CMakeDirectoryInformation.cmake<br>lib1/CMakeFiles/lib1.dir<br>

lib1/CMakeFiles/lib1.dir/build.make<br>lib1/CMakeFiles/lib1.dir/cmake_clean.cmake<br>lib1/CMakeFiles/lib1.dir/cmake_clean_target.cmake<br>lib1/CMakeFiles/lib1.dir/depend.make<br>lib1/CMakeFiles/lib1.dir/DependInfo.cmake<br>

lib1/CMakeFiles/lib1.dir/flags.make<br>lib1/CMakeFiles/lib1.dir/home<br>lib1/CMakeFiles/lib1.dir/home/lode<br>lib1/CMakeFiles/lib1.dir/home/lode/prj<br>lib1/CMakeFiles/lib1.dir/home/lode/prj/test<br>lib1/CMakeFiles/lib1.dir/home/lode/prj/test/cmake<br>

lib1/CMakeFiles/lib1.dir/home/lode/prj/test/cmake/ext<br>lib1/CMakeFiles/lib1.dir/home/lode/prj/test/cmake/ext/prj2<br>lib1/CMakeFiles/lib1.dir/home/lode/prj/test/cmake/ext/prj2/src<br>lib1/CMakeFiles/lib1.dir/link.txt<br>

lib1/CMakeFiles/lib1.dir/progress.make<br>lib1/CMakeFiles/progress.marks<br>lib1/cmake_install.cmake<br>lib1/Makefile<br></div></div></div>