Compilando o LightScreen no Linux Mint 18.1

1

Estou tendo problemas para compilar um aplicativo compatível com Linux no Linux Mint 18.1. O aplicativo em particular é chamado de Lightscreen. Tudo correu bem, além de usar o comando make .

Aqui está o processo de comando que fiz até agora:

Eu tive que instalar o QT 5.7 primeiro, porque ele não funcionaria com nenhuma outra versão, a menos que eu usasse uma versão mais antiga do lightscreen, pois eu obteria esse resultado:

Project ERROR: Unknown module(s) in QT: x11extras

Então eu fui em frente e instalei o QT 5.7, que é a reivindicação de suporte na atualização mais recente, e esta é a saída:

nicholas@LinuxNick ~/bin/lightscreen $ /home/nicholas/.Qt/5.7/gcc_64/bin/qmake
Project MESSAGE: This project is using private headers and will therefore be tied to this specific Qt module build version.
Project MESSAGE: Running this project against other versions of the Qt modules may crash at any arbitrary point.
Project MESSAGE: This is not a bug, but a result of using Qt internals. You have been warned!
nicholas@LinuxNick ~/bin/lightscreen $ 

Suspeitando que tudo estava bem, já que não havia mensagens de erro, mas sim mensagens gerais do Project, continuei. Eu corri fazer e houve meus primeiros erros.

In file included from tools/screenshot.cpp:45:0:
tools/screenshot.cpp: In member function ‘void Screenshot::save()’:
tools/screenshot.cpp:250:34: error: expected unqualified-id before numeric constant
             result = Screenshot::Success;
                                  ^
tools/screenshot.cpp:260:79: error: expected unqualified-id before numeric constant
   result = (QFile::rename(mUnloadFilename, fileName)) ? Screenshot::Success : S
                                                                     ^
tools/screenshot.cpp:260:79: error: expected ‘:’ before numeric constant
tools/screenshot.cpp:262:34: error: expected unqualified-id before numeric constant
             result = Screenshot::Success;
                                  ^
Makefile:5959: recipe for target 'screenshot.o' failed
make: *** [screenshot.o] Error 1

Estou fazendo algo errado? Eu sou meio novo para compilar coisas no Linux e enquanto compilei alguns programas, eu ainda não peguei o jeito e como as coisas deveriam ser compiladas. Um guia passo a passo seria útil, mas não precisa ser um, especialmente se não for necessário.

Por favor, ajude e obrigado antecipadamente.

EDIT: agora estou enfrentando um problema diferente. Quando eu executo make , esta é a saída:

g++ -c -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DUGLOBALHOTKEY_NOEXPORT -DAPP_VERSION=\"2.5\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_X11EXTRAS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SQL_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -I. -Itools/UGlobalHotkey -Itools/UGlobalHotkey -I../../.Qt/5.7/gcc_64/include -I../../.Qt/5.7/gcc_64/include/QtWidgets -I../../.Qt/5.7/gcc_64/include/QtMultimedia -I../../.Qt/5.7/gcc_64/include/QtGui/5.7.1 -I../../.Qt/5.7/gcc_64/include/QtGui/5.7.1/QtGui -I../../.Qt/5.7/gcc_64/include/QtX11Extras -I../../.Qt/5.7/gcc_64/include/QtGui -I../../.Qt/5.7/gcc_64/include/QtNetwork -I../../.Qt/5.7/gcc_64/include/QtSql -I../../.Qt/5.7/gcc_64/include/QtConcurrent -I../../.Qt/5.7/gcc_64/include/QtCore/5.7.1 -I../../.Qt/5.7/gcc_64/include/QtCore/5.7.1/QtCore -I../../.Qt/5.7/gcc_64/include/QtCore -I. -I. -I../../.Qt/5.7/gcc_64/mkspecs/linux-g++ -o os.o tools/os.cpp
tools/os.cpp: In function ‘QPair<QPixmap, QPoint> os::cursor()’:
tools/os.cpp:131:23: error: could not convert ‘QPoint(0, 0)’ from ‘QPoint’ to ‘QPair<QPixmap, QPoint>’
     return QPoint(0, 0);
                       ^
Makefile:5657: recipe for target 'os.o' failed
make: *** [os.o] Error 1
    
por Vencorr 04.06.2017 / 07:03

1 resposta

2

O problema vem de <X11/X.h> (incluído apenas ao compilar para o Linux). Define a seguinte macro:

#define Success 0

Isso interfere em um membro de enum com o mesmo nome, Screenshot::Result::Success .

Para corrigir isso, abra tools / screenshot.cpp e encontre as seguintes linhas:

#ifdef Q_OS_LINUX
    #include <QX11Info>
    #include <X11/X.h>
    #include <X11/Xlib.h>
#endif

Após a inclusão de X.h, adicione um #undef Success . Isso remove a macro conflitante.

    
por 14.06.2017 / 21:46

Tags