Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > огрехи кроссплатформенной сборки...


Автор: En_t_end 23.2.2006, 12:59
Есть класс, юзающийся в кроссплатформенной либе. Нужно решить проблему со сборкой под IDE VISUAL STUDIO 7.1.
Необходимо, чтобы к cpp был прежде всех файлов подключен "stdafx.h", у меня кроссплат. и кросскомпил. реализованна на основе препроцессорных директив. Но тут проблема... директива, нужная для сборки в выше написанной IDE определена в заголовочном файле параметров. Получается такой колапс:
cpp:
Код

//*******
//#include "stdafx.h"
#include "param.h" /*здесь определена PLFRM_CMPL_WINNT_VS6_7*/

#ifdef PLFRM_CMPL_WINNT_VS6_7
#include "stdafx.h"
#endif //PLFRM_CMPL_WINNT_VS6_7
//*********

Говорит в любом случае - unexpected #endif.
Что делать ? В принципе я могу отказаться от Precompiled Headers в пользу кроссплатформенности, однако, как отключить их? через #pragma ? Стоит ли это делать ?

Автор: ManiaK 23.2.2006, 13:45
En_t_end, прекопилирование заголовочных файлов в VC 6.0 отключается в настройках проекта::компилятора. В VC 7.1 думаю тоже самое должно быть. Никогда не видел особой пользы в этой опции...

Автор: En_t_end 23.2.2006, 13:48
ManiaK
Я понимаю... мне надо отключать их при прогонки кода препроцессором, то есть директивой #pragma. Кстати польза может и есть...постоянная сборка windows.h со всеми вытекающими отсюда последствиями, однако у меня другой случай.

Автор: En_t_end 23.2.2006, 14:16
Короче вопрос остается открытым, пока я не вижу рационального выхода из данной ситуации, может кто-то уже занимался сборкой кроссплатформенных исходников, поделитесь опытом, если не влом.

Автор: Daevaorn 23.2.2006, 14:38
En_t_end,
Я не знаю чем именно ты собираешь проект(make или ещё что-то), но почти во всех подобных утилитах есть возможность добавлять дефайны при компиляции. Т.е. я предлагаю не в коде определять компилятор, а во внешнем "скрипте" и добавлять дефайн при с опцией /D компилятора. Я когда собираю под разные платформы/компиляторы этим часто пользуюсь, хотя от прекомпилед хидеров отказался...

Автор: En_t_end 24.2.2006, 10:53
Я уже тоже отказался от Precompiled Headers, но вот думаю рановато. К примеру g++ ИМХО их держит, правда придется делать несколько Precompiled Headers source для каждого компилятора и платформы - пока либа мелкая, мне это не надо, как только разрастется - придется support их обеспечивать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)