Я новичок в CMake, и у меня возникла проблема с организацией файлов, созданных в CMake.
Сначала я подробно опишу дерево файлов. Я пытаюсь собрать простую библиотеку с примером программы из двух исходных каталогов (Grid и examples) и каталог сборки. Итак, у меня есть три файла CmakeLists.txt. Итак, верхний каталог выглядит так: CMakeLists.txt, / Grid, / examples и /build.
Этот CMakeLists.txt содержит:
project(talyfem)
cmake_minimum_required(VERSION 2.8.4)
set(CMAKE_CXX_FLAGS "-g")
add_subdirectory(examples Grid)
В папке Grid CmakeLists.txt находится:
add_library(${PROJECT_NAME} FEMElm.cpp Grid.cpp GridField.cpp SuperGrid.cpp SuperGrid3D.cpp)
В папке примеров CmakeLists.txt находится:
set(EXAMPLES example1)
foreach(example ${EXAMPLES})
add_executable(${example} ${example}.cpp)
target_link_libraries(${example} ${PROJECT_NAME})
endforeach(example)
Я запускаю CMake из каталога сборки как: Cmake ../
Когда я делаю это, это создает странную файловую структуру, которую я не могу понять и которая кажется неправильной. Сначала он создает папку ../build/CMakeFiles, чего я и ожидал. Но затем он создает папку ../build/Grid, а внутри этой папки находится еще одна папка CMakeFiles, которая затем содержит папку example1.dir. Если я переключаю порядок подкаталогов, в котором Grid первый и второй примеры, то происходит обратное, когда Grid.dir находится в подкаталоге examples.
Это кажется неправильным, и я был бы признателен за любую помощь в решении этой проблемы.
Я ожидаю, что ../build/CMakeFiles должен содержать Grid.dir и папку examples.dir.