キキジキ
キキジキ

Reputation: 1453

Correct cmake setup to include headers

I have a project structured like this:

─root
  ├──src
  │   ├──main.cpp
  │   └──CMakeLists.txt[2]
  ├──build
  ├──out
  ├──inc
  ├──dep
  │   ├──log
  │   │   ├──include
  │   │   │     └──log.h
  │   │   ├──src
  │   │   │   └──log.cpp
  │   │   └──CMakeLists.txt[4]
  │   └──CMakeLists.txt[3]
  └──CMakeLists.txt[1]

Under dep I have a logging library, which is an external git repository with his own CMakeLists.txt file.

The main CMakeLists.txt (marked as [1]) is:

cmake_minimum_required(VERSION 2.6)
set(APP_ROOT ${PROJECT_SOURCE_DIR})
add_subdirectory(dep)
add_subdirectory(src)

The CMakeLists.txt (marked as [2]) for the current project code is:

add_executable(app main.cpp)
target_link_libraries(app log)
include_directories("${APP_ROOT}/inc")

The CMakeLists.txt (marked as [3]) for the dependencies is:

add_subdirectory(log)

What I'm trying to do is to have the contents of the dep/log/include folder copied inside a new folder called inc/log, so that in main.cpp I can write something like #include <log/log.h>, but I don't understand how. I would like to avoid editing the CMakeLists.txt of the logger project.

Upvotes: 1

Views: 160

Answers (1)

キキジキ
キキジキ

Reputation: 1453

My solution: in /dep/CMakeLists.txt I added

file(MAKE_DIRECTORY "${APP_ROOT}/inc/log")
file(COPY "log/include/" DESTINATION "${APP_ROOT}/inc/log")

Upvotes: 2

Related Questions