Learning CMake: A Beginner's Guide Cmake Beginner S

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 7

cmake学习资料汇总
https://cgold.readthedocs.io/en/latest/overview.html
1. Introduction
2. Tutorial1:Let'sstartwithCMake
3. Buildsystem
4. Compilationandproperties
5. Commandsandvariables
6. Tutorial2:Creatingasimpleproject-SimpleCal
7. Modulesandpackages
8. Tutorial3:CreatingaprojectwithCMake,Qt5andOpenCV
9. CrossCompiling
10.Tutorial4:CompilingaprojectwithCMakeinVS2012
11. ctest
12.Tutorial5:TestingwithCMakeandGoogleTestingFramework
13.cpack
14.Tutorial6:PackagingSimpleCal
15.CMake'sdevelopment
16.Tutorial7:CreateasimplepluginforCMake
17.Tutorial8:UsingCMakewithEclipse
18.Conclusion
TableofContents
Recently,I'vecreatedasimplelibraryinC++.IwanttouseCMakeasthebuildingsystemsoit’sthetimetolearnanew
tool.
Introduction
Tutorial1:Let'sstartwithCMake
Buildsystem
Compilationandproperties
Commandsandvariables
Tutorial2:Creatingasimpleproject-SimpleCal
Modulesandpackages
Tutorial3:CreatingaprojectwithCMake,Qt5andOpenCV
CrossCompiling
Tutorial4:CompilingaprojectwithCMakeinVS2012
ctest
Tutorial5:TestingwithCMakeandGoogleTestingFramework
cpack
Tutorial6:PackagingSimpleCal
CMake'sdevelopment
Tutorial7:CreateasimplepluginforCMake
Tutorial8:UsingCMakewithEclipse
Conclusion
Introduction
Summary
FromtheCMake’swebsite:
CMakeisanextensible,open-sourcesystemthatmanagesthebuildprocessinanoperatingsystemandina
compiler-independentmanner.Unlikemanycross-platformsystems,CMakeisdesignedtobeusedinconjunction
withthenativebuildenvironment.Simpleconfigurationfilesplacedineachsourcedirectory(calledCMakeLists.txt
files)areusedtogeneratestandardbuildfiles(e.g.,makefilesonUnixandprojects/workspacesinWindowsMSVC)
whichareusedintheusualway.CMakecangenerateanativebuildenvironmentthatwillcompilesourcecode,
createlibraries,generatewrappersandbuildexecutablesinarbitrarycombinations.CMakesupportsin-placeand
out-of-placebuilds,andcanthereforesupportmultiplebuildsfromasinglesourcetree.CMakealsosupportsstatic
anddynamiclibrarybuilds.AnothernicefeatureofCMakeisthatitgeneratesacachefilethatisdesignedtobeused
withagraphicaleditor.Forexample,whenCMakeruns,itlocatesincludefiles,libraries,andexecutables,andmay
encounteroptionalbuilddirectives.Thisinformationisgatheredintothecache,whichmaybechangedbytheuser
priortothegenerationofthenativebuildfiles.
Inashortconclusion,CMakehelpyoutomanageandbuildyoursourcecodeseffectively.Ifyouhavesometroubleswith
gccandMakefile,justmoveouttoCMake.
ToinstallCMakeinLinux,justsimplydoonyourterminal
#ForUbuntu
$sudoapt-getinstallcmake
#ForRedhat
$yuminstallcmake
#ForMacOSXwithMacports
$sudoportinstallcmake
SoIassumethatyouknowC++andwhattheMakefileis.CMakewilldothejobofMakefilefromnow.Letstartwitha
simpleC++program.
//test.cpp
#include<iostream>
usingnamespacestd;
intmain(void){
cout<<"HelloWorld"<<endl;
return(0);
}
Chapter1:Let'sstartwithCMake
1.WhatisCMake?
2.Installation
3.Quickstart
Andyousaveditastest.cpp,thentocompileitinCMakeyoushouldcreateatxtfilenamedCMakeLists.txt
#SpecifytheminimumversionforCMake
cmake_minimum_required(VERSION2.8)
#Project'sname
project(hello)
#Settheoutputfolderwhereyourprogramwillbecreated
set(CMAKE_BINARY_DIR${CMAKE_SOURCE_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH${CMAKE_BINARY_DIR})
#Thefollowingfolderwillbeincluded
include_directories("${PROJECT_SOURCE_DIR}")
ThereisalistofCMake’sglobalvaribales.Youshouldknowthem.
CMAKE_BINARY_DIR
ifyouarebuildingin-source,thisisthesameasCMAKE_SOURCE_DIR,otherwisethisisthetopleveldirectoryofyourbuildtree
CMAKE_SOURCE_DIR
thisisthedirectory,fromwhichcmakewasstarted,i.e.thetoplevelsourcedirectory
EXECUTABLE_OUTPUT_PATH
setthisvariabletospecifyacommonplacewhereCMakeshouldputallexecutablefiles(insteadof
CMAKE_CURRENT_BINARY_DIR)
SET(EXECUTABLE_OUTPUT_PATH${PROJECT_BINARY_DIR}/bin)
LIBRARY_OUTPUT_PATH
setthisvariabletospecifyacommonplacewhereCMakeshouldputalllibraries(insteadofCMAKE_CURRENT_BINARY_DIR)
SET(LIBRARY_OUTPUT_PATH${PROJECT_BINARY_DIR}/lib)
PROJECT_NAME
thenameoftheprojectsetbyPROJECT()command.
PROJECT_SOURCE_DIR
containsthefullpathtotherootofyourprojectsourcedirectory,i.e.tothenearestdirectorywhereCMakeLists.txtcontains
thePROJECT()commandNow,youhavetocompilethetest.cpp.Thewaytodothistaskistoosimple.Addthefollowing
lineintoyourCMakeLists.txt:
add_executable(hello${PROJECT_SOURCE_DIR}/test.cpp)
Now,letbuildthesourcecodewithCMake.Atthispoint,youwillhavethefolderwiththefollowingfiles:
$ls
test.cppCMakeLists.txt
这个难道在
整个编译的
流程中永远
保持不变吗
包含了
PROJECT命令
CMakeLists.t
xt文件所在的
目录是什
么。。。。。
所以应该是
PROJECT_SOUR
CE_DIR 目录
所以PROJECT目录的作用应该就是确定
PROJECT_SOURCE_DIR 目录
Tobuildyourprojecthello,justdo
$cmake-H.-Bbuild
$cmake--buildbuild---j3
ThefirstcommandwillcreatesCMakeconfigurationfilesinsidefolderbuildandthesecondonewillgeneratetheoutput
programhelloinbinfolder.Youshouldtestyouroutput:
$./bin/hello
HelloWorld
Toosimple,right?
ThesourcecodeofthissampleprojectcanbefoundatCMakeLists.txtandtest.cpp
Chapter2:CMake'sbuildsystem

Navigation menu