Precompiled Headers

Описание: Разработка и отладка приложений. Упор на 3D-графику.

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#1 dyvniy » Вт, 27 сентября 2016, 12:28:17

In Linux
http://www.linux.org.ru/forum/development/7472411
Спойлер
gcc + cmake и precompiled headers перегенерация *.gch после изменения *.h


0

4
Доброго времени суток!

Возникает следующая проблема - использую cmake, подключил precompiled headers. Но вот беда, если меняется какой нибудь заголовочный файл, перегенерация *.gch не происходит:

т.е. есть след код:

// stdafx.h
#include "main.h"
#include "test.h"
#include 100500 других заголовочных файлов
CMakeLists.txt
cmake_minimum_required (VERSION 2.6)

project(test)

include_directories(
${CMAKE_CURRENT_BINARY_DIR}
)

set(SOURCES
main.cpp
test.cpp
)

set(HEADERS
stdafx.h
main.h
test.h
)

set(RESOURCES
)


# Создаем приложение
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} ${RESOURCES})

#Генерируем прикомпилинг хеадер
include(PCHSupport)
if(PCHSupport_FOUND)
add_precompiled_header(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h)
endif(PCHSupport_FOUND)

add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND rm ARGS -rfv ${CCOPY_DST} )
add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ln ARGS -sv ${CCOPY_SRC} ${CCOPY_DST} )
запускаю make в бинарном каталоге - все ок - сгенерировалось, собралось, работает.
Если поменять в каталоге с исходниками my.h, то в .../stdafx.h.gch/Debug.gch - лежит старый (видно по дате, размеру, командной строке в eclipse) т.е. я ожидал что он перестроится заного.

Теперь, собственно, вопрос: Как заставить пересобирать *.gch-ки с помощью cmake, может волшебные ключи есть какие? Как вы в своих проектах решили такую проблему?

Спасибо!


art_corp ★
29.02.2012 11:38:11
Juick Share on Twitter Share on Google Plus Ссылка
← v4l2 перечисление устройств
Как выполняются sh-скрипты в sh-скрипте? →

С каких пор в CMake появилась команда add_precompiled_header? Косяк в твоей реализации, там и копай.

JackyTreehorn ★ (29.02.2012 14:01:19)
Ссылка
Ответ на: комментарий от JackyTreehorn 29.02.2012 14:01:19

да похоже модуль расширения старый был
PCHSupport.cmake - нарыл в интернете другую его версию там кода в два раза больше, как раз есть проверка на включаемые в главный заголовочный файл других хедеров, а затем их проверка.

art_corp ★ (29.02.2012 15:30:35)
Ссылка
Ответ на: да похоже модуль расширения старый был от art_corp 29.02.2012 15:30:35

И как, заработало? Я для VS свой скрипт писал.

JackyTreehorn ★ (29.02.2012 15:45:42)
Ссылка
Ответ на: комментарий от JackyTreehorn 29.02.2012 15:45:42

на все 100% сказать не могу, на тестовом проекте, работает - переношу на основной. вот если интересно ссылка на сам модуль: https://github.com/luceneplusplus/LucenePlusPlus/blob/master/cmake/PCHSupport.cmake

и еще, они похожи в одном message только разкомментированы.
http://public.kitware.com/Bug/file_download.php?file_id=901&type=bug

P.S. Вроде как, судя по коду, они универсальны для нескольких компиляторов, в том числе и студии.
Изображение

Название раздела: Программирование (под Desktop и Android)
Описание: Разработка и отладка приложений. Упор на 3D-графику.

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения
:) ;) :hihi: :P :hah: :haha: :angel: :( :st: :_( :cool: 8-| :beee: :ham: :rrr: :grr: :* :secret: :stupid: :music: Ещё смайлики…
   

Вернуться в «Программирование (под Desktop и Android)»

Кто сейчас на форуме (по активности за 15 минут)

Сейчас этот раздел просматривают: 3 гостя