I have a project with the following file structure (transitioning to CMake), with source and header files in the same directories:
root
+- module1
+- a.hpp
+- a.cpp
+- b.hpp
+- b.cpp
+ module1a
+- a.hpp
+- b.cpp
+- module2
+- a.hpp
+- a.cpp
Header files are included in each other as #include<projectname/module1/a.hpp>
. How can I instruct CMake to install all headers into the build directory as this structure, prior to building the .cpp
files? I was briefly looking at install(DIRECTORY "${CMAKE_SOURCE_DIR}/module1" DESTINATION "projectname/module1" FILES_MATCHING PATTERN "*.hpp")
(from CMake install header files and maintain directory heirarchy) but it does install those headers into the build directory (nothing happens).
The headers are needed only at compile-time, not at runtime.
Can I get some hint how to achieve this?
EDIT: The directory layout is different in the source three than how #include
directives include it. For example, consider #include<projectname/module1a/a.hpp>
. include_directories
will not work for this header. The same for #include<projectname/module1/a.hpp
as root
!=projectname
. Headers must be copied/symlinked from the old layout to the new layout first.