uilianries
(usa Linux Mint)
Enviado em 17/08/2016 - 13:39h
A estrutura de um script CMake é diferente de um Makefile, é uma linguagem de script a parte. A vantagem é a saída, podendo ser um Makefile ou outro script de build.
Digamos que eu queira construir o famigerado "Hello World", então eu preciso de um arquivo com essa receita:
main.cpp
#include <iostream>
int main() {
std::cout << "Hello World\n";
return 0;
}
CMakeLists.txt
cmake_minimum_required (VERSION 2.8)
project (HelloWorld)
add_executable(HelloWorld main.cpp)
Em seguida, executamos o
cmake sobre esta receita, e por estarmos no Linux, será gerado uma saída baseada em Makefile, com isso, apenas invocamos o
make
$ > cmake .
-- The C compiler identification is GNU 5.3.0
-- The CXX compiler identification is GNU 5.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/uilian.ries/Development/cpp/Hello
$ > ls
CMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt main.cpp Makefile
$ > make
Scanning dependencies of target HelloWorld
[100%] Building CXX object CMakeFiles/HelloWorld.dir/main.cpp.o
Linking CXX executable HelloWorld
[100%] Built target HelloWorld
$ > ./HelloWorld
Hello World
Veja que executei o make sem nem ter escrito o Makefile, tudo sendo gerado pelo CMake.
Quais as outras plataformas suportas?
Segunda a versão 3.2.2 (não é a mais atual):
Generators
The following generators are available on this platform:
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files (experimental).
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles = Generates Eclipse CDT 4.0 project files.
KDevelop3 = Generates KDevelop 3 project files.
KDevelop3 - Unix Makefiles = Generates KDevelop 3 project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles = Generates Sublime Text 2 project files.
Até
Codeblocks é suportado.
--
Uilian Ries
Linux Counter: 521986