Projeto C++ no Linux usando Conan (v2) para dependências. Ao usar o pacote Conan libavrocpp/1.11.3 em conanfile.py:
def requirements(self):
self.requires("libavrocpp/1.11.3")
def build_requirements(self):
self.tool_requires("libavrocpp/1.11.3")
Mais tarde, quero usar a ferramenta avrogencpp do pacote para gerar classes C++ a partir dos meus esquemas avro durante o CMake.
Vejo que a ferramenta existe (em vários lugares) no cache local do Conan (~/.conan2) e preciso referenciá-la de alguma forma a partir daí. Eu poderia simplesmente codificar o caminho para avrogencpp nos meus arquivos do CMake, mas isso não funcionaria na próxima vez que eu atualizasse o pacote para uma versão mais recente ou os autores do Conan modificassem o layout do cache (o layout do cache é proprietário e sujeito a alterações). Então:
Qual é a maneira correta (específica da versão) de referenciar a ferramenta avrogencpp a partir de um arquivo CMake ao usar o pacote Conan? Existe algum símbolo definido em algum lugar que aponte para ela?
(O CMake tem FindProtobuf, que define símbolos, incluindo um que aponta para o compilador protoc específico da versão. Existe algo semelhante para o Avro? Não encontrei até agora...)
As predefinições
conan-release
econan-debug
são corrigidas automaticamentePATH
para você. No meu caso:onde
.conan2/p/b/libavbd87bce06f2d1/p/bin
contém oavrogencpp
binário.Portanto, você pode simplesmente usar
add_custom_command
oradd_custom_target
e executaravrogencpp
sem um caminho absoluto.Se você realmente quer um caminho absoluto, você pode usar algo como: