Зависимости заголовка для обработки Зависимости с Cmake

я использую Cmake на небольшом проекте C ++ и так Куда он работает отлично ... с одним поворотом: x

, когда я изменяю файл заголовка, он обычно требует перекомпиляции файлов ряд источников (те, которые включают его, прямо или косвенно), однако, кажется, что Cmake обнаруживает только Некоторые исходных файлов, которые будут перекомпилированы, что приводит к поврежденному государству. Я могу обойти это, вытерев проект и восстановление с нуля, но это обходит целью использование утилиты: только перекомпиляция только Требуется.

Следовательно, я полагаю, я делаю что-то не так.

Мой проект очень просто организован:

  • Top Directory ll Ресурсы сидят, основные cmakelists.txt сидит там
  • каталог «Включить», где все общедоступные заголовки ложятся (в различных подкаталах)
  • каталог «SRC», где все подкаталоги для файлов источников являются, CMAKELists SRC. TXT сидит там
  • cmakelists.txt на подкаталог в каталоге "SRC"

Основной каталог имеет:

cmake_minimum_required(VERSION 2.8)

project(FOO)

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)

# Compiler Options
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++0x -Wall -Wextra -Werror")

include_directories($(FOO_SOURCE_DIR)/include)

add_subdirectory(src)

каталог «SRC»:

add_subdirectory(sub1)
add_subdirectory(sub2)
add_subdirectory(sub3)
add_subdirectory(sub4)

add_executable(foo main.cpp)

target_link_libraries(foo sub1 sub2 sub3 sub4)

, где Sub4 зависит от Sub3 , который зависит от суб2 , который зависит от Sub1

и пример подкаталого (Sub3):

set(SUB3_SRCS
    File1.cpp
    File2.cpp
    File3.cpp
    File4.cpp
    File5.cpp
    File6.cpp
    )

add_library(sub3 ${SUB3_SRCS})

target_link_libraries(sub3 sub1 sub2)

Я был бы рад, если кто-то может указать мою ошибку Я, ищет здесь или на Cmake, ничего не дал, так что я думаю, что это очень легко или должно работать из коробки ...

(для справки, я использую Cmake версии 2.8.2 на MSS)

редактировать :

Благодаря мнению законопроекта я проверил Зависит отказывается файл. Вот пример:

src/sub3/CMakeFiles/sub3.dir/File1.cpp.obj: ../src/sub3/File1.cpp

Да, вот все, не включенные ссылки вообще ссылки: x

46
задан Matthieu M. 2 October 2011 в 10:53
поделиться