Estou tentando enviar um deb para meu PPA de acordo com este manual:
https://packaging.ubuntu.com/html/packaging-new-software.html
Consigo construir meu aplicativo bzr builddeb -- -nc -us -uc
e assiná-lo com bzr builddeb -S
. Mas a execução de pbuilder-dist groovy build myproject_0.2.8-1.dsc
in ../build-area
falha.
O log completo está disponível no pastebin: https://pastebin.com/whr6Qsd1
Acredito que o problema esteja na seguinte peça:
Determining if the CXX compiler accepts the flag -fno-keep-inline-dllexport failed with the following output:
Change Dir: /build/myapp-0.2.8/obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/gmake cmTC_3ab02/fast && gmake[1]: Entering directory '/build/myapp-0.2.8/obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
/usr/bin/gmake -f CMakeFiles/cmTC_3ab02.dir/build.make CMakeFiles/cmTC_3ab02.dir/build
gmake[2]: Entering directory '/build/myapp-0.2.8/obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_3ab02.dir/DummyCXXFile.cxx.o
/usr/bin/c++ -std=c++0x -fno-keep-inline-dllexport -o CMakeFiles/cmTC_3ab02.dir/DummyCXXFile.cxx.o -c /usr/share/cmake-3.16/Modules/DummyCXXFile.cxx
c++: error: command-line option '-fno-keep-inline-dllexport' is not supported by this configuration
gmake[2]: *** [CMakeFiles/cmTC_3ab02.dir/build.make:66: CMakeFiles/cmTC_3ab02.dir/DummyCXXFile.cxx.o] Error 1
gmake[2]: Leaving directory '/build/myapp-0.2.8/obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
gmake[1]: *** [Makefile:121: cmTC_3ab02/fast] Error 2
gmake[1]: Leaving directory '/build/myapp-0.2.8/obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
dh_auto_configure: error: cd obj-x86_64-linux-gnu && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu .. returned exit code 1
make: *** [debian/rules:6: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
Então, cmake
está verificando se /usr/c++
suporta -fno-keep-inline-dllexport
. Compilador termina com 1 bcs não suporta, cmake retorna 2 e dh_auto_configure painics.
Se eu executar cmake
no meu sistema, estou recebendo o seguinte stdout:
-- Checking to see if CXX compiler accepts flag -ffunction-sections -fdata-sections -Wl,--gc-sections
-- Checking to see if CXX compiler accepts flag -ffunction-sections -fdata-sections -Wl,--gc-sections - yes
-- Checking to see if CXX compiler accepts flag -fno-keep-inline-dllexport
-- Checking to see if CXX compiler accepts flag -fno-keep-inline-dllexport - no
-- Checking to see if CXX compiler accepts flag -Werror=return-type
-- Checking to see if CXX compiler accepts flag -Werror=return-type - yes
Portanto, mesmo o compilador no meu sistema não suporta arquivos -fno-keep-inline-dllexport
. E eu estou bem com isso. Não importa para mim. cmake
não falha.
Parece que a verificação com falha do recurso não obrigatório cmake
arruina todo o pbuilder-dist
processo. Existe alguma maneira de mudar esse comportamento ou estou perdendo alguma coisa?
Ps Minhas dependências de construção são:debhelper-compat (= 13), cmake (>=2.8.9), gcc (>=4.6), qt5-qmake (>= 5.4), qtbase5-dev (>= 5.4), libtiff5-dev (>= 4.0.3), libjpeg8-dev (>= 8c), libpng-dev (>=1.6.2)
Não tenho certeza sobre o problema exato solicitado pela sua configuração. Mas duas soluções possíveis são
-std=c++0x
para-std=c++11
.-fno-keep-inline-dllexport
.Por favor, verifique seus arquivos de configuração, onde modificar isso.
Antes disso, você pode verificar se alguma dessas opções funcionaria. Vá para o diretório pai
CMakeFiles
e tente replicar o comando com falha na linha de comando, com as modificações sugeridas:/usr/bin/c++ -std=c++11 -fno-keep-inline-dllexport -o CMakeFiles/cmTC_3ab02.dir/DummyCXXFile.cxx.o -c /usr/share/cmake-3.16/Modules/DummyCXXFile.cxx
/usr/bin/c++ -std=c++0x -o CMakeFiles/cmTC_3ab02.dir/DummyCXXFile.cxx.o -c /usr/share/cmake-3.16/Modules/DummyCXXFile.cxx
Para que isso funcione, você provavelmente precisaria chamar primeiro
cmake --debug-trycompile
( source ).Observações sobre seu pastebin (mensagens dignas de nota, embora não necessariamente problemas) e procedimento:
ln: failed to create hard link '...' => '...': Invalid cross-device link
mensagens.Qt5LinguistTools
. Talvez valha a pena instalarqttools5-dev
antes do que você fez.Configuring incomplete, errors occurred!
. Vale a pena verificar quais são as possíveis fontes de problemas.cmake
no meu sistema..."? Igual ao ponto acima.Relacionado :
https://stackoverflow.com/questions/19523412/qt-config-c11-but-std-c0x
https://code-examples.net/en/q/129e754