crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> компиляция под Windows с использованием cmake, проблемы при сборке
igor_bogomolov
  опции профиля:
сообщение 3.10.2010, 21:16
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Всем привет.
Перевожу проект на cmake. Столкнулся с проблемой при компиляции под Windows. Не собирается разделяемая библиотека. При этом под Linux'ом никаких проблем нет. (При сборке qmake'ом тоже всё нормально под обоими платформами)

Код, на мой взгляд, стандартный. Т.е. имею следующее определение
dll_export.h
#include <QtCore/QtGlobal>

#if defined(D_SHARED_LIB)
#  define SHARED_LIB_EXPORT Q_DECL_EXPORT
#else
#  define SHARED_LIB_EXPORT Q_DECL_IMPORT
#endif
которым помечаю нужные классы
Раскрывающийся текст
class SHARED_LIB_EXPORT Device: public DbEntity
{
    Q_OBJECT
    ...
};
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

set(PROJECT k095_kernel)
project(${PROJECT})

include("src_files.cmake") #здесь подключаются файлы проекта (.h/.cpp/.qrc)
list(APPEND HEADERS ${SRC_PATH}/../../../k095-common/zvector.h)
list(APPEND HEADERS ${SRC_PATH}/../../../k095-common/zutils.h)
list(APPEND SOURCES ${SRC_PATH}/../../../k095-common/zvector.cpp)
list(APPEND SOURCES ${SRC_PATH}/../../../k095-common/zutils.cpp)

add_definitions(-DDSHARED_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII)
include_directories(${PROJECT_SOURCE_DIR}/../../../k095-common)

find_package(Qt4 COMPONENTS QtCore QtXml QtHelp QtNetwork QtScript REQUIRED)
include(${QT_USE_FILE})

qt4_wrap_cpp(MOC_SOURCES ${Q_HEADERS})
qt4_automoc(${Q_SOURCES})
qt4_add_resources(QRC_SOURCES ${Q_RESOURCES})

#translation
set(LANGUAGES ru)
foreach(LANGUAGE ${LANGUAGES})
        set(TS ${TRANSLATIONS_PATH}/${PROJECT}_${LANGUAGE}.ts)
        set(QM ${TRANSLATIONS_PATH}/${PROJECT}_${LANGUAGE}.qm)
        set(TRANSLATIONS ${TRANSLATIONS} ${TS})
        set(TRANSLATIONS_BINARY ${TRANSLATIONS_BINARY} ${QM})
        add_custom_command(
                OUTPUT ${QM}
                COMMAND ${QT_LRELEASE_EXECUTABLE} ${TS}
                MAIN_DEPENDENCY ${TS})
endforeach()


# output path
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCES_DIR}../../bin/lib)

#executable module of tmpled
add_library( ${PROJECT} SHARED ${HEDARS} ${SOURCES} ${Q_HEDARS} ${Q_SOURCES} ${MOC_SOURCES} ${QRC_SOURCES})
target_link_libraries(${PROJECT} ${QT_LIBRARIES})



При компиляции получаю кучу ворнингов
Цитата
D:\Work\Qt Workspace\k095-client\src\kernel\action_box.cpp:13: warning: 'ActionBox::ActionBox(EngineBox*, QObject*)' redeclared without dllimport attribute: previous dllimport ignored

D:\Work\Qt Workspace\k095-client\src\kernel\action_box.cpp:25: warning: 'virtual ActionBox::~ActionBox()' redeclared without dllimport attribute: previous dllimport ignored
И ошибку

Цитата
D:\Work\Qt Workspace\k095-client\src\kernel\paramlist.cpp:77: error: definition of static data member 'Device::m_iTicketId' of dllimport'd class

В чём может быть проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 4.10.2010, 1:58
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Нашел ошибку.
Цитата(igor_bogomolov @ 3.10.2010, 22:16) *
#if defined(D_SHARED_LIB)
Цитата(igor_bogomolov @ 3.10.2010, 22:16) *
add_definitions(-DDSHARED_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII)

Приложение скомпилировалось, но всё равно не запускается
Цитата
Ошибка при инициализации приложения (0хс0000005)


Что то не складывается у меня с cmake'ом пока :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 17:30