Como faço para usar o CMake?

102

Estou tentando usar o CMake para compilar o opencv.

Estou lendo o tutorial, mas não consigo entender o que são arquivos CMakeLists e como eles estão conectados à interface do CMake?

Também não conseguia entender o que são makefiles, eles são os mesmos que CMakeLists?

E qual arquivo eu acabo abrindo com o visual-studio?

lital maatuk
fonte
Se a questão for relacionada ao Windows, isso deve ser mencionado nela (talvez com uma windowstag)
Basile Starynkevitch
Em relação ao CMake 3.13.3, plataforma Windows e IDE Visual Studio 2017, sugiro: wikihow.com/Use-CMake Regards.
George Theodosiou

Respostas:

30

CMake pega um arquivo CMakeList e o envia para um formato de construção específico da plataforma, por exemplo, um Makefile, Visual Studio, etc.

Você executa o CMake no CMakeList primeiro. Se você estiver no Visual Studio, poderá carregar o projeto / solução de saída.

Holtavolt
fonte
2
O que é o Makefile? Onde encontro o arquivo de projeto / solução do visualstudio?
lital maatuk
3
Depois de executar o cmake (ou CMakeSetup e clicar em generate), você deve conseguir encontrar o Makefile (se for unix) ou os arquivos do projeto em algum lugar na árvore do projeto. O local pode ser especificado no CMakeList. Aqui está uma breve apresentação que encontrei no wiki CMake que você pode achar útil: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake configura o projeto inteiro usando um formato de compilação de sua escolha, o que significa que ele configura tudo para que você possa usar, por exemplo, o Visual Studio para compilar. Por padrão (pelo menos no Linux), ele cria um projeto que usa Make em seu lugar. Make é usado para realmente construir o projeto, não para configurá-lo ou configurá-lo. Portanto, primeiro você teria que usar o CMake para configurar o projeto e, em seguida, executar o Make para compilar e construir coisas.
leinaD_natipaC de
156

Eu não sei sobre o Windows (nunca usei), mas em um sistema Linux você só precisa criar um diretório de compilação (no diretório de origem superior)

mkdir build-dir

vá para dentro

cd build-dir

em seguida, execute cmakee aponte para o diretório pai

cmake ..

e finalmente correr make

make

Observe que makee cmakesão programas diferentes. cmakeé um Makefilegerador e o makeutilitário é governado por um Makefilearquivo textual. Veja cmake & make nas páginas da wikipedia.

NB: No Windows, cmakepode funcionar, portanto, pode precisar ser usado de forma diferente. Você precisará ler a documentação (como eu fiz para o Linux)

Basile Starynkevitch
fonte
Qual é a diferença entre cmake e make? são programas diferentes?
lital maatuk
4
Ótima resposta; Não consegui descobrir como obter os arquivos de compilação em um subdiretório. Não entendo porque a documentação oficial não menciona isso.
TheBigB
Isso funciona no Linux, mas no Windows falha na detecção do compilador C / C ++. Alguma idéia de como fazer isso?
bartlomiej.n
Depende de como seu computador específico está configurado. Verifique se sua PATHvariável está correta. Aliás, eu nunca usei o Windows na minha vida (e escrevi meu primeiro programa em 1974)
Basile Starynkevitch
2
Tantos votos positivos e a resposta não diz nada sobre o Visual Studio.
Abyx de
10

Sim, cmake e make são programas diferentes. cmakeé (no Linux) um gerador de Makefile (e Makefile -s são os arquivos que controlam o makeutilitário). Existem outros geradores de Makefile (em particular configure e autoconf etc ...). E você pode encontrar outros programas de automação de compilação (por exemplo, ninja ).

Basile Starynkevitch
fonte
Eu acho que isso é um pouco confuso. cmake é um gerador de sistema de construção e uma das coisas que ele pode gerar são makefiles (como em gnu.org/software/make ). No entanto, existem muitos outros sistemas que ele pode gerar e eles não são "geradores de Makefile". Em macos (e provavelmente em qualquer outro lugar), se você executar cmake --help, ele lhe dará uma longa lista de geradores que possui. Por exemplo, cmake pode gerar projetos Xcode - nada a ver com make.
James Moore
0

Em relação ao CMake 3.13.3, plataforma Windows e IDE Visual Studio 2017, sugiro este guia . Resumindo, sugiro:
1. Baixe cmake> descompacte-o> execute-o.
2. Como exemplo, baixe GLFW> descompacte-o> crie dentro da pasta Build .
3. Em cmake, Navegue "Fonte"> Navegue "Construir"> Configurar e Gerar.
4. No Visual Studio 2017 Build your Solution.
5. Obtenha os binários.
Saudações.

George Theodosiou
fonte