<div dir="ltr">Hi Eric<div><br></div><div>Thanks very much for your answer. I understand now.</div><div><br></div><div>David</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 18, 2019 at 12:57 PM Eric Noulard <<a href="mailto:eric.noulard@gmail.com">eric.noulard@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 18 oct. 2019 à 12:53, David Aldrich <<a href="mailto:david.aldrich.ntml@gmail.com" target="_blank">david.aldrich.ntml@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">Hi</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">I'm
learning how to use hierarchical directories in CMake and am trying to get an
example to work that I saw on YouTube. The example isn't doing what I expect so
I would be grateful for some help in understanding why.</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">I am running
CMake 3.10.2 on Ubuntu 18.04 (Microsoft WSL) and using make.</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">I have a
project called 'cmake-good' that should build library 'libsay-hello.a' and
executable 'cmake-good'.</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">Here's
the directory tree (excluding CMake artifacts which I don't think I need to
show):</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">├── CMakeLists.txt</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">├── build</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   ├── CMakeCache.txt</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   ├── CMakeFiles</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   ├── Makefile</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   ├── cmake_install.cmake</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   ├── hello-exe</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   │   ├── Makefile</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   │   ├── cmake-good</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   └── say-hello</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│      
├── Makefile</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│      
└── libsay-hello.a</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">├── hello-exe</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   ├── CMakeLists.txt</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">│   └── main.cpp</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">├── say-hello</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">   
├── CMakeLists.txt</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">   
└── src</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">        └── say-hello</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">            ├── hello.cpp</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New"">            └── hello.hpp</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New""> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">Here are
the CMakeLists.txt files:</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US" style="font-family:"Courier New""> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">1) Top
level CMakeLists.txt:</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">cmake_minimum_required(VERSION
3.10)</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">project(MyProject
VERSION 1.0.0)</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">add_subdirectory(say-hello)</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">add_subdirectory(hello-exe)</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">2)
hello_exe/CMakeLists.txt:</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">add_executable(cmake-good
main.cpp )</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">target_link_libraries(cmake-good
PRIVATE say-hello)</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">3) say-hello/CMakeLists.txt:</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">add_library(</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    say-hello</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    src/say-hello/hello.hpp</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    src/say-hello/hello.cpp</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">)</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">target_include_directories(say-hello
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src")</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">My
problem is that I expect to see:</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    hello-exe/cmake-good</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    say-hello/libsay-hello.a</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">but I
see:</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    build\hello-exe\cmake-good</span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">    build\say-hello\libsay-hello.a   </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US"> </span></p>

<p style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-US">Why is
that?</span></p></div></blockquote><div><br></div><div>Because build/ is your build directory and you apparently did an out-of-source build (which is good practice)</div><div>see :<a href="https://gitlab.kitware.com/cmake/community/wikis/FAQ#out-of-source-build-trees" target="_blank">https://gitlab.kitware.com/cmake/community/wikis/FAQ#out-of-source-build-trees</a><br></div><div><br></div><div>You should have done something like:</div><div><br></div><div>cd cmake-good/build</div><div>cmake ..</div><div>make</div><div><br></div><div>In this case everything the build is generating (CMake artefact, build artefact etc...) gets written build/</div><div>the directory hierarchy in build will have the same structure as your source tree.</div><div><br></div><div>This is an expected behaviour.</div><div><br></div><div></div><div> </div></div><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div>Eric<br></div></div></div></div></div></div>
</blockquote></div>