Changes

Cmake

6,621 bytes added, 12:08, 9 February 2014
CMAKE Build
== Useful information[http://www.cmake.org/Wiki/CMake <br>] ==
[http://www.cmake.org/Wiki/CMake CMAKE&nbsp;wiki page]<br> [[Media:Cmake-material.pdf]]
== Install cmake ==
</pre>
= Create your cmake hello world =
 
== Manually Build ==
First we will create a new directory:
<source lang="c">
#include &lt;<stdio.h&gt;<br><br> int main (int argn, char *argv[])<br>{<br>&nbsp;&nbsp; &nbsp; printf("hello world\n");<br>&nbsp;&nbsp; &nbsp; return 0;}</source>  after create your main.c file compile it with gcc as:<br>}<source lang="bash">gcc main.c -o hello_world</source> and execute it with<br>&lt;<source lang="bash">./hello_worldhello world</source>  == CMAKE Build == first we must create the cmake configuration file named: CMakeLists.txt with this content: <pre>PROJECT(Hello_World2)ADD_EXECUTABLE(hello_World2 main.c)</pre> Where: PROJECT: Project NameADD_EXECUTABLE: Is the executable name and the source files<source lang="bash">mcaro@ubuntu:~/Projects/test$ ls -altotal 16drwx------ 2 mcaro mcaro 4096 Feb 9 02:52 .drwxrwxr-x 3 mcaro mcaro 4096 Feb 8 14:19 ..-rw-rw-r-- 1 mcaro mcaro 58 Feb 9 02:52 CMakeLists.txt-rw-rw-r-- 1 mcaro mcaro 96 Feb 9 02:51 main.cmcaro@ubuntu:~/Projects/test$ </source> Now we're ready for execute cmake and check the options available:<source lang="bash">mcaro@ubuntu:~/Projects/test$ cmakecmake version 2.8.7Usage  cmake [options] <path-to-source> cmake [options] <path-to-existing-build> Options -C <initial-cache> = Pre-load a script to populate the cache. -D <var>:<type>=<value> = Create a cmake cache entry. -U <globbing_expr> = Remove matching entries from CMake cache. -G <generator-name> = Specify a makefile generator. -Wno-dev = Suppress developer warnings. -Wdev = Enable developer warnings. -E = CMake command mode. -i = Run in wizard mode. -L[A][H] = List non-advanced cached variables. --build <dir> = Build a CMake-generated project binary tree. -N = View mode only. -P <file> = Process script mode. --find-package = Run in pkg-config like mode. --graphviz=[file] = Generate graphviz of dependencies. --system-information [file] = Dump information about this system. --debug-trycompile = Do not delete the try_compile build tree. Only useful on one try_compile at a time. --debug-output = Put cmake in a debug mode. --trace = Put cmake in trace mode. --warn-uninitialized = Warn about uninitialized values. --warn-unused-vars = Warn about unused variables. --no-warn-unused-cli = Do not warn about command line options. --check-system-vars = Find problems with variable usage in system files. --help-command cmd [file] = Print help for a single command and exit. --help-command-list [file] = List available listfile commands and exit. --help-commands [file] = Print help for all commands and exit. --help-compatcommands [file]= Print help for compatibility commands. --help-module module [file] = Print help for a single module and exit. --help-module-list [file] = List available modules and exit. --help-modules [file] = Print help for all modules and exit. --help-custom-modules [file]= Print help for all custom modules and exit. --help-policy cmp [file] = Print help for a single policy and exit. --help-policies [file] = Print help for all policies and exit. --help-property prop [file] = Print help for a single property and exit. --help-property-list [file] = List available properties and exit. --help-properties [file] = Print help for all properties and exit. --help-variable var [file] = Print help for a single variable and exit. --help-variable-list [file] = List documented variables and exit. --help-variables [file] = Print help for all variables and exit. --copyright [file] = Print the CMake copyright and exit. --help,-help,-usage,-h,-H,/?= Print usage information and exit. --help-full [file] = Print full help and exit. --help-html [file] = Print full help in HTML format. --help-man [file] = Print full help as a UNIX man page and exit. --version,-version,/V [file]= Show program name/version banner and exit. Generators The following generators are available on this platform: Unix Makefiles = Generates standard UNIX makefiles. CodeBlocks - Unix Makefiles = Generates CodeBlocks 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.</source> Now we will select generate "Unix Makefiles" as:<source lang="bash">mcaro@ubuntu:~/Projects/test$ cmake -G "Unix Makefiles"-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler: /usr/bin/gcc-- Check for working C compiler: /usr/bin/gcc -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - 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-- Configuring done-- Generating done-- Build files have been written to: /home/mcaro/Projects/testmcaro@ubuntu:~/Projects/test$ ls -altotal 44drwx------ 3 mcaro mcaro 4096 Feb 9 02:53 .drwxrwxr-x 3 mcaro mcaro 4096 Feb 8 14:19 ..-rw-rw-r-- 1 mcaro mcaro 10805 Feb 9 02:53 CMakeCache.txtdrwxrwxr-x 6 mcaro mcaro 4096 Feb 9 02:53 CMakeFiles-rw-rw-r-- 1 mcaro mcaro 1585 Feb 9 02:53 cmake_install.cmake-rw-rw-r-- 1 mcaro mcaro 58 Feb 9 02:52 CMakeLists.txt-rw-rw-r-- 1 mcaro mcaro 96 Feb 9 02:51 main.c-rw-rw-r-- 1 mcaro mcaro 4701 Feb 9 02:53 Makefile</source&gt;>Cmake was create the Makefile for build your project and we can test it using make<brsource lang="bash">mcaro@ubuntu:~/Projects/test$ makeScanning dependencies of target hello_World2[100%] Building C object CMakeFiles/hello_World2.dir/main.c.oLinking C executable hello_World2[100%] Built target hello_World2mcaro@ubuntu:~/Projects/test$ ls -altotal 52drwx------ 3 mcaro mcaro 4096 Feb 9 02:56 .drwxrwxr-x 3 mcaro mcaro 4096 Feb 8 14:19 ..-rw-rw-r-- 1 mcaro mcaro 10805 Feb 9 02:53 CMakeCache.txtdrwxrwxr-x 6 mcaro mcaro 4096 Feb 9 02:56 CMakeFiles-rw-rw-r-- 1 mcaro mcaro 1585 Feb 9 02:53 cmake_install.cmake-rw-rw-r-- 1 mcaro mcaro 58 Feb 9 02:52 CMakeLists.txt-rwxrwxr-x 1 mcaro mcaro 7158 Feb 9 02:56 hello_World2-rw-rw-r-- 1 mcaro mcaro 96 Feb 9 02:51 main.c-rw-rw-r-- 1 mcaro mcaro 4701 Feb 9 02:53 Makefilemcaro@ubuntu:~/Projects/test$ ./hello_World2 Hello World
</source>
Its all !!
[[Category:Development_tools]]