Hi Eric Thanks very much for your answer. I understand now.
David On Fri, Oct 18, 2019 at 12:57 PM Eric Noulard <eric.noul...@gmail.com> wrote: > > > Le ven. 18 oct. 2019 à 12:53, David Aldrich <david.aldrich.n...@gmail.com> > a écrit : > >> Hi >> >> >> >> 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. >> >> >> >> I am running CMake 3.10.2 on Ubuntu 18.04 (Microsoft WSL) and using make. >> >> >> >> I have a project called 'cmake-good' that should build library >> 'libsay-hello.a' and executable 'cmake-good'. >> >> >> >> Here's the directory tree (excluding CMake artifacts which I don't think >> I need to show): >> >> >> >> ├── CMakeLists.txt >> >> ├── build >> >> │ ├── CMakeCache.txt >> >> │ ├── CMakeFiles >> >> │ ├── Makefile >> >> │ ├── cmake_install.cmake >> >> │ ├── hello-exe >> >> │ │ ├── Makefile >> >> │ │ ├── cmake-good >> >> │ └── say-hello >> >> │ ├── Makefile >> >> │ └── libsay-hello.a >> >> ├── hello-exe >> >> │ ├── CMakeLists.txt >> >> │ └── main.cpp >> >> ├── say-hello >> >> ├── CMakeLists.txt >> >> └── src >> >> └── say-hello >> >> ├── hello.cpp >> >> └── hello.hpp >> >> >> >> Here are the CMakeLists.txt files: >> >> >> >> 1) Top level CMakeLists.txt: >> >> >> >> cmake_minimum_required(VERSION 3.10) >> >> project(MyProject VERSION 1.0.0) >> >> add_subdirectory(say-hello) >> >> add_subdirectory(hello-exe) >> >> >> >> 2) hello_exe/CMakeLists.txt: >> >> >> >> add_executable(cmake-good main.cpp ) >> >> target_link_libraries(cmake-good PRIVATE say-hello) >> >> >> >> 3) say-hello/CMakeLists.txt: >> >> >> >> add_library( >> >> say-hello >> >> src/say-hello/hello.hpp >> >> src/say-hello/hello.cpp >> >> ) >> >> target_include_directories(say-hello PUBLIC >> "${CMAKE_CURRENT_SOURCE_DIR}/src") >> >> >> >> My problem is that I expect to see: >> >> >> >> hello-exe/cmake-good >> >> say-hello/libsay-hello.a >> >> >> >> but I see: >> >> >> >> build\hello-exe\cmake-good >> >> build\say-hello\libsay-hello.a >> >> >> >> Why is that? >> > > Because build/ is your build directory and you apparently did an > out-of-source build (which is good practice) > see : > https://gitlab.kitware.com/cmake/community/wikis/FAQ#out-of-source-build-trees > > You should have done something like: > > cd cmake-good/build > cmake .. > make > > In this case everything the build is generating (CMake artefact, build > artefact etc...) gets written build/ > the directory hierarchy in build will have the same structure as your > source tree. > > This is an expected behaviour. > > > > -- > Eric >
-- 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: https://cmake.org/mailman/listinfo/cmake