Entre no ambiente experimental da nuvem
<1> Crie o diretório do projeto experimental para esta seção. Após a criação, o diretório do projeto terá a seguinte aparência:
cyber_demo
|-- cyber_01
|-- demo_main
| |-- BUILD
| |-- main.cc
|–BUILD
|–cyberfile .xml
| –cyber_demo.BUILD
Modular
<2> Gravar arquivos BUILD e cyberfile.xml relacionados ao gerenciamento de pacotes Apollo
.
load("//tools/install:install.bzl", "install", "install_src_files")
install(
name = "install",
data = [
"cyber_demo.BUILD",
"cyberfile.xml",
],
deps = [
"//cyber_demo/cyber_01/demo_main:install",
],
)
install_src_files(
name = "install_src",
src_dir = ["."],
dest = "cyber_demo/src",
filter = "*",
deps = [
"//cyber_demo/cyber_01/demo_main:install_src",
]
)
A regra de instalação pode instalar o destino definido no arquivo BUILD do módulo no warehouse local;
a regra install_src instala diretamente o arquivo no warehouse local de acordo com regras específicas e mantém a estrutura de diretório do código-fonte;
cyberfile.xml é um arquivo de descrição do módulo, usado para descrever um módulo transformado em informações relacionadas ao pacote de software, como nome do pacote, número da versão e pacotes de software dependentes. O conteúdo de cyberfile.xml neste exemplo é o seguinte:
arquivo cibernético.xml
<package>
<name>cyber_demo</name>
<version>1.0.0</version>
<description>
cyber_demo
</description>
<maintainer email="AD-platform">AD-platform@baidu.com</maintainer>
<type>module</type>
<src_path>//cyber_demo</src_path>
<license>BSD</license>
<author>Apollo</author>
<depend type="binary" repo_name="cyber">cyber-dev</depend>
<builder>bazel</builder>
</package>
Empacotado dentro do módulo
<3> Escreva arquivos fonte e arquivos BUILD;
produza o conteúdo "hello Apollo" através de main.cc.
principal.cc
#include<cyber/cyber.h>
int main(int argc, char const *argv[])
{
apollo::cyber::Init(argv[0]);
AINFO << "hello Apollo";
AWARN << "hello Apollo";
AERROR << "hello Apollo";
AFATAL << "hello Apollo";
return 0;
}
Depois de escrever o arquivo de origem main.cc, você pode construir o arquivo de origem main.cc em um arquivo binário executável independente instanciando a regra cc_binary integrada do Bazel. O conteúdo do arquivo BUILD é o seguinte:
BUILD
load("//tools/install:install.bzl", "install", "install_src_files")
install(
name = "install",
data = [
"cyber_demo.BUILD",
"cyberfile.xml",
],
deps = [
"//cyber_demo/cyber_01/demo_main:install",
],
)
install_src_files(
name = "install_src",
src_dir = ["."],
dest = "cyber_demo/src",
filter = "*",
deps = [
"//cyber_demo/cyber_01/demo_main:install_src",
]
)
<4> Diretório de código de compilação
Execute as instruções de compilação do buildtool no diretório apollo_workspace
Após a compilação do buildtool build -p cyber_demo
, o sistema irá gerar o arquivo executável main no diretório /opt/apollo/neo/bin, conforme mostrado na figura abaixo: Para poder
ver os resultados, use o seguinte comando para imprimir os resultados de saída na janela, comando Como segue:
export GLOG_alsologtostderr=1
<5> Execute o arquivo executável.
No diretório /opt/apollo/neo/bin, execute o seguinte comando:
./main
Após a conclusão da execução , você pode ver que a janela da linha de comando imprime o conteúdo “olá Apollo”.