O Ubuntu IDE tenta executar projetos ARM baseados no CMake no desktop em vez do dispositivo: bug ou o quê?

1

Eu importei o projeto baseado no CMake para o Ubuntu IDE. Ele usa C ++ simples sem componentes QML. Quando tento executá-lo, ele não é implantado no dispositivo, mas é executado na área de trabalho (sem sucesso, relatando que não é possível encontrar a biblioteca armhf ld), embora tenha selecionado o armhf SDK e na guia Kits, meu dispositivo está selecionado para o kit atual e a dica de ferramenta no canto inferior esquerdo mostra que o aplicativo será instalado no dispositivo.

Quando abro a guia Executar nas configurações do Projeto, meu projeto com base no CMake difere dos projetos baseados no QMake porque possui os campos "Argumentos de linha de comando" e "Diretório de trabalho atual", mas não "Substituir aplicativo se instalado" e "Desinstalar aplicativo após a depuração" (não me lembro do texto exato agora). A partir disso, concluo que o IDE do Ubuntu não vê meu aplicativo como alvo do Ubuntu, mas como direcionado para o desktop. O que marca um projeto baseado no CMake como o Ubuntu Touch direcionado ao IDE?

É possível executar projetos baseados no CMake sem QML no dispositivo? O SDK não possui modelo para este caso de uso: todos os modelos baseados no CMake usam o QML, e o único projeto simples do C ++ (QtQuick App) usa o QMake.

Eu não tenho tais problemas com projetos baseados no QMake, e atualmente eu uso o CMake para construir uma biblioteca ao invés de executável, e então ligá-lo ao executável com o projeto fictício do QMake. Mas parece um kludge.

    
por MaxEd 28.03.2016 / 22:59

2 respostas

0

Ok, então se você está usando o desktop Kit e cmake reclama que não consegue encontrar as ferramentas armhf, você provavelmente não instalou o cmake na área de trabalho (existe um problema com as dependências que estamos tentando solve atm) e o QtCreator está usando uma instalação do cmake de um dos chroots que você criou para suporte a dispositivos.

Então, o que fazer:

  • Fechar o IDE do SDK do Ubuntu
  • Instale o cmake "apt install cmake"
  • Inicie o IDE do Ubuntu SDK
  • vá para: Opções - > Construir & amp; Executar e clique na guia CMake
  • verifique se / usr / bin / cmake está selecionado como o padrão
  • Abra a guia Kits, selecione seu Desktop Kit e verifique se / usr / bin / cmake é usado como ferramenta cmake.
  • Exclua as pastas de construção dos seus projetos e crie novamente

Não há necessidade de alterar os Kits dos dispositivos, pois eles são verificados automaticamente a cada partida.

Se você quiser empacotar seu próprio projeto de cmake, você precisa ter certeza de que está empacotado corretamente para o telefone. Sua melhor aposta é verificar um dos modelos originais do SDK do ubuntu para ver como isso é feito.

    
por zbenjamin 30.03.2016 / 19:22
0

OK, depois de muitos experimentos, descobri o que fiz de errado.

Assim, para fazer com que o Ubuntu IDE crie uma configuração que execute seu projeto baseado no CMake no dispositivo, tudo o que você precisa é ter a variável UBUNTU_MANIFEST_FILE definida em seu CMakeLists.txt, e precisa ser marcada explicitamente como CACHE INTERNAL. É meio óbvio quando você sabe como o plug-in do Ubuntu QtCreator funciona, mas por outro lado, não muito.

Então, basta adicionar

set(UBUNTU_MANIFEST_PATH "manifest.json" CACHE INTERNAL "Path to manifest file")

para o seu CMakeLists.txt e você é quase bom.

No entanto, também encontrei um problema que não funciona se eu especificar "$ {CMAKE_SOURCE_DIR} /manifest.json" como UBUNTU_MANIFEST_PATH, mesmo que o arquivo esteja exatamente lá.

A parte ruim é que o Ubuntu IDE ainda criará DOIS configurações de execução para o projeto. O primeiro, o padrão, que tem nome baseado no nome do seu executável, ainda tentará executar o código armhf no desktop. Eu acho que é um bug.

O segundo nome tem um nome que depende do que você escreveu na seção "hooks" do seu arquivo .desktop. Se esse nome for igual ao nome do executável, essa configuração terá "2" adicionada (isto é, cmake_test2). Esta segunda configuração é a que se usa - ela roda o projeto no dispositivo, mas você tem que escolher na seção "Executar" da página "Projetos" - por padrão, a configuração incorreta da execução é selecionada.

Em suma, parece que o suporte ao CMake no Ubuntu IDE ainda é um pouco frágil / com bugs.

    
por MaxEd 02.04.2016 / 17:29