я использую Cmake на небольшом проекте C ++ и так Куда он работает отлично ... с одним поворотом: x
, когда я изменяю файл заголовка, он обычно требует перекомпиляции файлов ряд источников (те, которые включают его, прямо или косвенно), однако, кажется, что Cmake обнаруживает только Некоторые исходных файлов, которые будут перекомпилированы, что приводит к поврежденному государству. Я могу обойти это, вытерев проект и восстановление с нуля, но это обходит целью использование утилиты: только перекомпиляция только Требуется.
Следовательно, я полагаю, я делаю что-то не так.
Мой проект очень просто организован:
Основной каталог имеет:
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