Sunrise Manually # 2: De acordo com o hardcore do IDE, Cmake e minha decepção com os animais

Em um artigo anterior, tive a audácia de usar o CLion como um IDE. E então um homem veio correndo com uma pergunta: ah, uma embarcação paga proprietária, esgotada, riu, etc. Para ser justo, houve apenas um comentário sobre Habré, mas na realidade existem milhares deles. Por exemplo, a última conta LOR ativa, sou registrada desde 2010 e, em quase todas as discussões envolvendo algum software proprietário, esse inferno começa. É claro que não vou provar nada a ninguém, mas isso pode ajudar o passado raro de passear.


O artigo é dividido condicionalmente em duas partes: socialmente motivacional e técnico (como criar o CMake no Windows sob vários IDEs).




Para onde foi tudo


Este comentário do último artigo foi a base do artigo : "Se o podcast é para iniciantes e não profissionais, por que você não levou em consideração a licença IDE :(" e a seguir.


O artigo é baseado nos resultados de um fluxo do Twitch e nos seus comentários. O registro está no YouTube. Este artigo não é uma transcrição de um podcast, mas um produto da sua compreensão.



Mensagem de origem


Primeiro, vamos verificar a validade da suposição original: o software é caro. Se você for ao site, o CLion custa 8,90 dólares por mês. 580 rublos. É claro que, para uma pessoa que não ganha a vida com programação - isso às vezes pode mostrar uma quantia decente que pode ser gasta em algo mais útil. Compre uma refeição, por exemplo.


Para um profissional, tudo é completamente diferente, mas vamos deixar esse tópico. Um jornalista difere de um funcionário do departamento de marketing de um fabricante de software ou jogos, pois não promove a política do Partido, não toma medidas para promover o produto. Ele fala como é. Como tudo isso é realmente, como um jornalista realmente vê uma pergunta. O mesmo acontece com os evangelistas de verdade.


A essência dos fenômenos e a sequência de anos,
Rostos de amigos e máscaras de inimigos,
Claramente visível e não pode ocultar
Dos olhos do poeta - o dono de séculos.

A luz das estrelas distantes e o começo do amanhecer
Os segredos da vida e os segredos do amor
Em um momento de inspiração, aquecido pelo sol -
Tudo se reflete nas almas do poeta -
No espelho do mundo ...

(c) Konstantin Nikolsky, Espelho do Mundo

Se for realmente interessante como o CLion aumenta sua renda, você encontrará alguém para entrar em contato e aqui estamos falando de outra coisa.


Tipologia


Em vez disso, considere grupos de pessoas que são bombardeadas, tanto quanto possível, a partir de software fechado.


Como você já entendeu, eu não sou um nifiga um sociólogo, e eu tenho apenas a tipologia que se desenvolveu no calor dos confrontos do fórum. Ele tem apenas a vantagem de ser possível atribuir uma pessoa a um determinado grupo praticamente sem incluir o cérebro, observando os dois primeiros comentários.


Então, as pessoas são:


  • Lutadores da Liberdade e Código Aberto
  • Honestamente enganado
  • Animais

Sugiro não considerar a incorreta do autor. Eu sou uma questão diferente .


Lutadores da Liberdade e Código Aberto


Os mais puros e brilhantes são os lutadores para quem abre. Eu próprio sou um daqueles que, ouvindo a palavra "Linux", corrige constantemente "não o Linux, mas o GNU / Linux" . O problema é que o mundo real nunca é preto e branco. Temos uma certa liberdade, e esse é um recurso que pode ser usado se necessário. Como alguém da gerência da Mozilla brincou (ou não), "por que precisamos de um crédito de confiança se não o gastamos?".


Exemplo: havia uma pessoa assim, Miguel de Icaza. Ele criou o Gnome e ajudou a criar um GNU / Linux desagradável da maneira que conhecemos. E então ele foi expulso da comunidade, e Stallman o chamou de "traidor da liberdade":


“Miguel de Icaza é essencialmente um traidor da comunidade de Software Livre. <...> O projeto visa organizar o funcionamento de programas supostamente de "código aberto" na plataforma Windows; portanto, o tempo inestimável dos desenvolvedores é gasto em plataformas gratuitas "

E onde está o Miguel agora? Ele e sua equipe trabalham lado a lado com um dos maiores projetos dos últimos anos - portando o .NET para o GNU / Linux sob licenças permissivas. Ele realmente passou seu tempo.


No fluxo, matei pelo menos vinte minutos para tropeçar no CMake sob o Visual Studio Code. Não deu certo. E no Visual Studio gratuito, mas não gratuito, ele saiu pela primeira vez. É exatamente isso que costumamos obter ao tentar usar software livre: no código aberto, por razões óbvias, não há tempo para pensar em scripts de ponta a ponta e cuidar de todo o produto. Obrigado aos desenvolvedores por terem feito pelo menos alguma coisa. Mas para nós, como usuários, ainda temos uma escolha moral e ética: ou escolhe a liberdade e gasta muito tempo desenvolvendo o software livre ou, pelo contrário, gasta a nossa liberdade na compra de tempo, que pode ser gasto em algumas boas ações.


Como esse problema está além do escopo dos problemas técnicos, terminaremos aqui. Uma pessoa verdadeiramente ideológica é fiel à sua ideia.


Animais


Oh, mas esta categoria está me bombardeando.


"As características específicas de uma pessoa que o distingue de outros animais são a postura ereta, um cérebro altamente desenvolvido, o pensamento e a fala articulada. Uma pessoa estuda e muda a si mesma e ao mundo ao seu redor, cria uma cultura e sua própria história". (c) Wikipedia .

Infelizmente, em uma conversa sobre o IDE, muitas vezes acontece que o interlocutor não é capaz de pensamento independente, em vez de fala articulada, ele murmura "e eu já tenho normas" e come o que eles dão. Por causa da postura ereta, é fácil confundi-la com uma pessoa, mas não se engane.


Essas criaturas montam tudo para qualquer um. Nos jogos, eles vendem lootboxes e DLC com música nostálgica. Nos editores, eles colocam várias coisas ocupadas analmente, com o objetivo de vincular o paciente a um ambiente, ecossistema específico e tanto que não é necessário fenazepam . Eles vão comer de tudo. "E também são as normas para mim."


É importante acrescentar que não apenas os profissionais de marketing estão se interessando, mas também apenas trolls ou esquizósicos clínicos naturais. Existem muitos esquizós, você não acredita em quanto.


Por exemplo, lembre-se do manifesto que Nikitonsky publicou recentemente (mais precisamente, sua tradução para o Habr): Minha decepção com o software ? Como eu sou bombardeado com ele. Espero sinceramente que Nikitonsky tenha escrito tudo isso para tocar conscientemente, e não realmente.


Veja o que teses existem:


  • Tudo é insuportavelmente lento - um telefone moderno é mais poderoso do que computadores que enviaram pessoas para a lua;
  • Tudo é ENORME - o Android pesa 6 gigabytes;
  • Tudo apodrece - dispositivos antigos não funcionam ou funcionam mal;
  • No caos da programação, observe os gráficos de dependência em npm e no teclado esquerdo.

Trolling é trolling, mas pode não ser familiar para alguém que o tamanho do código-fonte é "o que levou a pessoa à lua", ou seja, Apollo 11, de forma que o autor dificilmente os leria.




Os sistemas operacionais modernos definem qualquer equipamento e têm tudo para todas as ocasiões. Que a desaceleração dos dispositivos levou a uma situação maravilhosa quando os capitalistas de Merissa se curvaram e desenvolveram o ferro a um nível moderno, graças ao qual temos no bolso um megadispositivo para todas as ocasiões. Mesmo toalhas não são necessárias, é no Google Play. O npm mencionado permite que uma pessoa comum escreva coisas de complexidade inimaginável que levariam anos antes.


E então a todos esses camaradas que estão "comendo o que dão", de repente mega idéias da lista acima começam a aparecer na minha cabeça. Vamos estender ao IDE:


  • Para aplicativos no Electron (Visual Studio Code, Atom), as letras aparecem na tela muito lentamente, seja vim ou emacs;
  • O IDE do Eclipse fica mais lento;
  • Em geral, o Java fica mais lento - junto com tudo o que está escrito nele, incluindo NetBeans, IDEA e Clion;
  • Qualquer IDE desacelera comer por cento exatamente assim;
  • A propriedade é má;
  • A lista continua.

Essa lista já é suficiente para revisar o telhado. Não acredite em nenhum lixo. Se o vim é melhor que o Eclipse (ou vice-versa) em alguns casos, isso definitivamente não acontece porque os vizinhos irradiam os vimers com um microondas e os alienígenas sequestram os eclipses à noite.


Infelizmente, como resultado de longas guerras de guerra em rede, foi estabelecido com precisão: não pode haver diálogo aqui. Para o homem - humano, e para animal - animal. É assim que a vida é organizada. A probabilidade de alguém ler este artigo e mudar de idéia é extremamente pequena, imolada , melhorada .


Honestamente enganado


Agora terminamos com extremos: particularmente inteligentes da seita Stallman, de um lado do espectro, e não animais muito inteligentes do outro, vamos falar sobre pessoas comuns.


O primeiro equívoco é que, de alguma forma, somos pregados ao IDE. Passou do tempo em que as pessoas usavam algum tipo de Delphi 7 e versões antigas do Microsoft Visual Studio. Dizem que no novo Vizhualka estava tudo bem com os arquivos do projeto. Olá, olá, agora é o ano de 2018, não há mais escravidão.


Para nos livrarmos da escravidão, recebemos o CMake de cima: uma ferramenta utilitário de código aberto de plataforma cruzada que permite criar, testar e empacotar aplicativos.


Ainda não diz nada ao novato e seus braços buscam o IDE. Tudo isso com medo e mal-entendidos do que está acontecendo. Eu próprio sou de Java e, portanto, sei bem como os olhos de uma pessoa que viu o pom.xml pela primeira vez se expandem pela primeira vez.


Vamos descobrir em que consiste o projeto criado pela última vez e como construí-lo em todos os tipos de IDEs diferentes.


Composição do arquivo:



O sombreador é compilado diretamente em tempo de execução, com a função D3DCompile . O D3DCompiler do DirectX SDK (que agora é o Windows SDK) funciona. Nenhum IDE é necessário para construí-lo.


main.cpp é o único arquivo a ser construído. E é coletado usando informações que estão inteiramente no CMakeLists.txt .


Na direção oposta: existe o CMakeLists.txt , que nos diz exatamente o que vamos compilar. O assembly main.cpp registrado nele. Isso é suficiente para compilar o projeto. Após a compilação, é obtido um arquivo exe que, após o lançamento, coleta o sombreador e o exibe na tela. Tudo é extremamente simples, o IDE não está envolvido nessa cadeia e pode ser qualquer coisa.


IDE é opcional. Geralmente. O que é incompreensível aqui?


Assembléia


Momentos preparatórios


Como sempre, a preparação ocupa a maior parte do processo. Há algumas coisas que precisam ser esclarecidas.


Supõe-se que tudo seja feito com base no Msys2, que instalamos na última vez . Se não for esse o caso, você terá que se desembaraçar :)


Como instalar o CMake e Ninja


Para poder coletar algo, você deve instalar o CMake, se ainda não o fez.


  • Faça o download no site: https://cmake.org/download . Eu tenho cmake-3.12.2-win64-x64;
  • Descompacte e adicione o caminho ao local em que cmake.exe se encontra na variável de ambiente PATH do Windows;
  • Baixe do site o gerador ninja da versão mais recente ;
  • Descompacte e também coloque em algum lugar no PATH.

Como editar PATH para não viajar como um cuco


A primeira maneira é conhecida por todos: win + pause -> Configurações avançadas do sistema -> Advanced -> Variáveis ​​de ambiente. Infelizmente, mesmo no Windows 10, no qual o editor de variáveis ​​PATH foi adicionado, isso ainda não é muito conveniente.


Se você costuma mexer com PATH, usar a janela de edição padrão é muito irritante. Aconselho que você use o Rapid Environment Editor - é gratuito e economiza bastante nervos.


Como conectar a DLL do MinGW no modo de desenvolvimento


Para iniciar o aplicativo, você precisa de arquivos DLL de pelo menos mingw64\bin .


Infelizmente, não consegui encontrar uma solução realmente conveniente para lançar bibliotecas do MinGW para o PATH. Se algum sábio puder dizer nos comentários, ficarei muito agradecido.


Agora, a maneira mais fácil é anexar o diretório bin MinGW diretamente ao primeiro local no PATH. (No caso do Visual Studio, você pode simplesmente soltar as bibliotecas no diretório do assembly.) Infelizmente, esse método tem um enorme sinal de menos: alguns dos softwares no Windows começam a cair imediatamente após a modificação PATH. Por exemplo, Overwatch parou de funcionar para mim, e isso é uma coisa completamente fatal.


Se você, como eu, mora em um computador e não o liga apenas durante o horário comercial, é proposto o seguinte esquema: adicione MinGW ao PATH antes da programação e remova-o. Para facilitar o processo, você precisa criar dois arquivos em lotes que podem ser iniciados clicando duas vezes:


before.bat:


 setx path "Z:\msys64\mingw64\bin;%path%" 

after.bat:


 setx PATH "%PATH:Z:\msys64\mingw64\bin;=%" 

Como conectar a DLL no modo de lançamento de teste


É claro que o método anterior funciona apenas enquanto mingw64\bin está no PATH, ou seja, apenas no computador do desenvolvedor. E mesmo lá, você nem sempre quer mutilar o PATH. Se ele inicia uma pessoa comum (ou depois de after.bat), algo como:





A maneira mais fácil de resolver esse problema é colocar a dll necessária ao lado do arquivo executável. Mas, para isso, você precisa saber quais dlls são usadas!


Já temos alguns utilitários criados pela Microsoft para isso.


  • Uma lista completa de um aplicativo em execução pode ser vista usando ListDLLs , mas não mostra o que ainda não foi carregado.
  • Se você dumpbin /dependents "Z:\game\build\Mingw64-Debug\src.exe" Ferramentas -> Prompt de Comando do Visual Studio, dumpbin /dependents "Z:\game\build\Mingw64-Debug\src.exe" , exibirá apenas a dll de primeiro nível. Em outras palavras, se você terminar apenas o que o dumpbin lhe diz, após o lançamento ainda haverá erros - eles serão sobre outras DLLs.

Para percorrer as dependências em profundidade, existe um script que pode ser executado diretamente na linha de comando (msys2, cygwin, etc. - o suficiente para ter python2 / 3 e objdump instalados dentro).


  • Faça o download do script mingw-bundledlls,
  • Coloque ao lado do arquivo,
  • Em um editor de texto, na blacklist = [ array blacklist = [ adicione nossas partes do DirectX: d3d10.dll, d3d11.dll, d3dcompiler_43.dll ,
  • chmod 755 ./mingw-bundledlls ,
  • Para ver as ./mingw-bundledlls ./src.exe usadas: ./mingw-bundledlls ./src.exe (bem, qualquer executável em que você esteja mais interessado),
  • Para copiar e colocar automaticamente a seguir: ./mingw-bundledlls --copy ./src.exe
  • LUCRO: o executável é iniciado assim, clicando duas vezes no arquivo exe e no Visual Studio.

Ainda existem várias maneiras complicadas de contratar o CMake para copiar a dll, mas se você começar a se aprofundar em problemas de distribuição, nunca poderá terminar este artigo.


Montagem manual


  • before.bat
  • Iniciar -> Executar -> cmd.exe
  • cd /dz://game/src
  • cmake -G "Ninja" -D EXECUTABLE_OUTPUT_PATH="bin" -D CMAKE_CXX_COMPILER="Z:/msys64/mingw64/bin/g++.exe" -D CMAKE_C_COMPILER="Z:/msys64/mingw64/bin/gcc.exe" .
  • ninja
  • Execute o arquivo gerado na lixeira imediatamente ou anexe a dll de acordo com as instruções acima e execute after.bat

Provamos que não estamos vinculados ao IDE.


Construir no Visual Studio


Mas, ainda assim, o desenvolvimento sem um IDE não é o ideal. Na última vez, já montamos um aplicativo de teste usando o CLion. Mas isso é propriedade paga e zashkvar, certo? Esqueça. Agora apenas grátis.


No Visual Studio, a sequência de ações necessárias é super simples.


  • before.bat
  • Inicie o Visual Studio;
  • Arquivo -> Abrir -> CMake;
  • Selecione CMakeLists.txt;
  • O visualizador pensa e exibe o projeto por um tempo;
  • Menu principal -> Cache -> Gerar -> nome do projeto;
  • Nós olhamos para Saída e corrigimos os erros (por exemplo, eu jurei na versão CMake, tive que baixá-la para 3,11 em vez de 3,12);
  • Menu principal -> CMake -> Alterar configurações do CMake (selecione MinGW64-Debug);
  • Um arquivo CMakeSettings.json é gerado automaticamente no projeto. Nós indicamos o caminho para o MinGW lá (eu o encontrei no vídeo anterior "Z: \ msys64 \ mingw64"), salve o arquivo;
  • Menu principal -> Cache -> Gerar -> CMakeLists.txt;
  • Menu principal -> Cache -> Gerar -> nome do projeto;
  • Se tudo for feito corretamente, um item com o nome do projeto aparecerá no menu Selecionar um item de inicialização válido (ao lado da seta verde para iniciar o aplicativo);
  • Começamos.

Como no caso do console, você pode iniciá-lo corretamente (lembrando que o MinGW está no PATH) ou executar o after.bat e colocar as DLLs necessárias de acordo com as instruções. A DLL precisa ser colocada diretamente no diretório para onde o aplicativo está indo. Pode ser especificado no parâmetro buildRoot no arquivo CMakeSettings.json.


Então, senhores, a coisa mais importante: no Visual Studio, tudo compila e roda perfeitamente. Provamos que não estamos vinculados a um IDE comercial.


Construir no código do Visual Studio


Infelizmente, o Visual Studio ainda não é um software de código fechado proprietário. Precisamos avançar para algo mais gratuito, e este é o Visual Studio Code.


Primeiro mindfak engraçado. Se você executar o VSCode em um monitor com grande escala (estou sentado em casa assistindo TV, por exemplo), a interface do VSCode se tornará uma bagunça. Para impedir que isso aconteça, você precisa executá-lo com o fator --force-device-scale-factor (faça um atalho para a área de trabalho ou algo assim).


Infelizmente, eu não dominei o gerenciamento PATH para VSCode, portanto, a única maneira de iniciá-lo é modificar o PATH com before.bat e outro hack, que descreverei abaixo.


Em seguida, você precisa configurar o VSCode.


  • Instale o CMake Tools: Visualizar -> Extensões -> na pesquisa, digite "CMake Tools", clique em instalar na frente do pacote criado pelo autor do vetor-de-bool.
  • Ver -> Explorer -> Abrir Pasta (selecione o diretório com o nosso projeto);
  • Paleta de comandos (CP, atalho Ctrl + P) -> "> CMake: Scan for Kits";
  • Escolha nosso "GCC 8.2.0", para o qual ele leva ao lugar certo onde o msys2 está instalado ou o que você usa lá;
  • Arquivo> Preferências> Configurações;
  • Vá para a guia Configurações do usuário;
  • Clique nos três pontos no canto superior direito do painel e selecione "Abrir settings.json" no menu;
  • Adicione as seguintes opções:

 "cmake.configureOnOpen": true, "terminal.integrated.shell.windows": "D:/msys64/usr/bin/bash.exe", "terminal.integrated.shellArgs.windows": [ "-i" ], "terminal.integrated.env.windows": { "PATH": "/mingw64/bin;/usr/local/bin;/usr/bin;/bin;Z:/msys64/bin/;Z:/msys64/usr/local/bin;Z:/msys64/usr/bin;Z:/msys64/bin;Z:/msys64/mingw64/bin/;%PATH%" }, "cmake.buildDirectory": "${workspaceRoot}/build/${buildType}", "cmake.clearOutputBeforeBuild": true, "cmake.generator": "Ninja", "cmake.cmakePath": "C:\\my\\opt\\cmake-3.12.2-win64-x64\\cmake-3.12.2-win64-x64\\bin\\cmake.exe", "cmake.mingwSearchDirs": [ "Z:/msys64/mingw64", ], "cmake.preferredGenerators": [ "Ninja" ], "cmake.loggingLevel": "debug" 

  • A compilação deve ocorrer automaticamente e a compilação será dobrada no diretório da build . Se isso não acontecer, você precisará clicar no botão Build com a engrenagem na linha de status com o mouse.

É claro que é necessário especificar diretamente o caminho para mingw e cmake. "Mas eu tenho CAMINHO!" Apenas indique, por favor, isso resolverá toda uma gama de problemas.


Há, no entanto, uma maneira exclusiva de não descartar o PATH.


  • "cmake.generator": "MSYS Makefiles"
  • "cmake.preferredGenerators": [ "MSYS Makefiles"]
  • Verifique se o MinGW não está no PATH (after.bat);
  • Verifique se você removeu o diretório de construção no projeto.
  • Inicie o console Msys2;
  • export PATH=/z/msys64/mingw64/bin;$PATH (você pode inseri-lo em algum tipo de "~/.bashrc" )
  • Execute o VSCode a partir dele, por exemplo, da seguinte forma: "C:\Users\olegchir\AppData\Local\Programs\Microsoft VS Code\Code.exe"
  • E então tudo é como antes. O arquivo deve ser gerado normalmente.
  • Quando você tenta iniciá-lo imediatamente no Explorer com um clique duplo, isso instantaneamente leva a erros de pesquisa de DLL - isso significa que tudo está correto, nós realmente usamos um PATH especial dentro do VSCode, mas não fora.

Portanto, provamos que em um IDE gratuito também podemos viver bastante para nós mesmos.


Sumário


Resumindo, se você é uma pessoa normal, pode usar o CMake, MinGW e não soprar no bigode. Tudo é livremente portátil entre o IDE, tudo simplesmente funciona. Podemos usar qualquer IDE pago, fechado e não gratuito a qualquer momento, e não teremos nada a ver com isso. Mas todo mundo vai sofrer, e com razão.


Artigos futuros levarão em conta sua opinião. Você pode fazer perguntas e oferecer sugestões nos comentários durante o fluxo do Twitch . Se esses artigos serão ou não depende de quão violentamente você pressiona a seta para baixo deste comentário.


                  

© Alexander Raevsky

Source: https://habr.com/ru/post/pt425209/


All Articles