KeyWord
targets, generators and commands, etc.
Source files -> Targets [EXE|LIB]
Directory, Local Generator, Global Generator
Main Structure
1) cmake
controls the cmake PRocesscan be created and used in various GUIs2) cmake has one cmGlobalGenerator
abstract base classchild classes responsible for platform-specific build process3) cmGlobalGenerator has many cmLocalGenerator
abstract base classchild classes responsible for platform-specific build file generation4) cmLocalGenerator has one cmMakefile
Parse CMakeLists.txt and store information from CMakeLists.txt file
List of targets and variablesOptional flagsList of libariesList of include pathes5) cmCommand
abstract base classchild classes responsible for implementing all commands in CMakeadd_library, add_executable and add_custom_target
EX#1
add_library (foo STATIC foo1.c foo2.c)EX#2
add_library (foo foo.cxx)target_link_libraries (foo bar)add_executable (foobar foobar.cxx)target_link_libraries (foobar foo)EX#1 Control Flow
set (FOO 1)if (${FOO} LESS 2) set (FOO 2)else (${FOO} LESS 2) set (FOO 3)endif (${FOO} LESS 2)EX#2 Var Scope
function (foo) message (${test}) # test is 1 here set (test 2) message (${test})endfunction()set (test 1)foo()message (${test})EX#3 Parent Scrope
function (foo) message (${test}) set (test 2 PARENT_SCOPE) message (${test)}endfunction()set (test 1)foo()message (${test}) # test will now be 2 hereEX#4 List
set (items_to_buy apple orange pear bear)foreach (item ${items_to_buy}) message ("Don't forget to buy one ${item}")endforeach()EX#5 Option
option (USE_JPEG "Do you want to use the JPEG library")or
set (USE_JPEG ON CACHE BOOL "include jpge support?")TYPES: BOOL, PATH, FILEPATH, STRING
Case#1 Visual Studio Win64
>> cd build>> cmake -G "Visual Studio 14 2015 Win64" ..>> cmake --build .Case#2 Visual Studio Win32
>> cd build>> cmake -G "Visual Studio 14 2015" ..>> cmake --build .Case#3 Build Specific Target
>> cmake --build . --target HelloWorld[1] CMake 3.0.2 Documetation
新闻热点
疑难解答