CMake使用教程Word文档下载推荐.docx
《CMake使用教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《CMake使用教程Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
CMake使用步骤:
运行GUI的cmake界面:
cmake-2.8.1-win32-x86/bin/cmake-gui.exe
执行Configure:
运行之后,生成了如下文件:
生成Makefile:
执行Generate之后生成如下文件:
运行make进行编译:
编译完成后,在build目录生成Tutorial.exe,运行Tutorial.exe25就可以看到运行结果:
运行makeinstall安装程序:
运行maketest进行测试:
通过cmaketutorial学习CMake配置方法
//www.cmake.org/cmake/help/cmake_tutorial.html
可以在源代码的Tests/Turorial目录中找到这个手册对应的代码。
1、Step1。
(如果不知道如何使用cmake,以及如何使用编译产生的Turorial.exe,可先看下前面“CMake使用步骤”的说明,它以Step4为例详细介绍了使用过程,Step1的配置可能不够完全,比如无法运行makeinstall,无法运行maketest,但可以参考。
)
简单的程序编译。
(1)运行GUI的cmake,指定要编译的源代码路径和二进制文件路径(会自动创建)。
(2)点击Configure,配置成功后,再点击Generate。
配置需要选择合适的编译器,虽然我安装了VC2008,但没有配置成功;
选择UnixMakefiles,配置成功,它自动找到了DevC++下的gcc.exe等编译器。
(3)在build3目录执行make,就能够编译生成Turorial.exe了。
D:
/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3>
make
LinkingCXXexecutableTutorial.exe
[100%]BuilttargetTutorial
可以运行一下Turorial.exe:
Tutorial.exe
Tutorial.exeVersion1.0
Usage:
Tutorial.exenumber
Tutorial.exe4
Thesquarerootof4is2
2、Step2
把子目录编译为库,并且链接到最终的可执行文件。
include_directories("
${PROJECT_SOURCE_DIR}/MathFunctions"
)
add_subdirectory(MathFunctions)
#使得子目录MathFunctions也能被编译
#addtheexecutable
add_executable(Tutorialtutorial.cxx)
target_link_libraries(TutorialMathFunctions)
产生makefile:
在GUI上点击Configure,之后Generate还是灰色,再次点击Configure,Generate就可以点击了。
编译:
在build目录运行make,即可开始编译,但是开始会报告sh.exe运行异常,应该是Tools下的UnxUtils的sh.exe与Win7不兼容,发现有如下make文件,估计是它导致的,于是把它重命名,不使用UnxUtils下的make,就OK乐。
/Tools/CMD/UnxUtils/usr/local/wbin/make.exe
编译过程:
/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step2/build>
[50%]BuildingCXXobjectMathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cxx
.obj
LinkingCXXstaticlibrarylibMathFunctions.a
[50%]BuilttargetMathFunctions
3、Step3
支持makeinstall把程序安装到系统指定目录,并且运行一些测试检查它是否能够正常工作。
a、安装时使用的基础目录,由CMAKE_INSTALL_PREFIX指定。
b、可以通过一个很简单的用例检查程序是否运行起来,没有出现异常。
(TurotialRuns只是一个用例名字)
add_test(TutorialRunsTutorial25)
c、macro方式进行多组数据的测试是非常简洁方便的。
#defineamacrotosimplifyaddingtests,thenuseit
macro(do_testargresult)
add_test(TutorialComp${arg}Tutorial${arg})
set_tests_properties(TutorialComp${arg}
PROPERTIESPASS_REGULAR_EXPRESSION${result})
endmacro(do_test)
#doabunchofresultbasedtests
do_test(25"
25is5"
do_test(-25"
-25is0"
执行makeinstall:
/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build>
makeinstall
[50%]"
BuilttargetMathFunctions"
[100%]"
BuilttargetTutorial"
Installtheproject...
--Installconfiguration:
"
"
--Installing:
C:
/ProgramFiles/Tutorial/bin/Tutorial.exe
/ProgramFiles/Tutorial/include/TutorialConfig.h
/ProgramFiles/Tutorial/bin/libMathFunctions.a
/ProgramFiles/Tutorial/include/MathFunctions.h
安装结果:
C:
/ProgramFiles/Tutorial>
tree/f
.
├─bin
│libMathFunctions.a
│Tutorial.exe
│
└─include
MathFunctions.h
TutorialConfig.h
执行maketest:
maketest
Runningtests...
TestprojectD:
/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build
Start1:
TutorialRuns
1/5Test#1:
TutorialRuns.....................Passed0.01sec
Start2:
TutorialComp25
2/5Test#2:
TutorialComp25...................Passed0.01sec
Start3:
TutorialNegative
3/5Test#3:
TutorialNegative.................Passed0.01sec
Start4:
TutorialSmall
4/5Test#4:
TutorialSmall....................Passed0.00sec
Start5:
TutorialUsage
5/5Test#5:
TutorialUsage....................Passed0.00sec
100%testspassed,0testsfailedoutof5
TotalTesttime(real)=0.13sec
修改一个测试用例,让它不过:
修改顶层CMakeLists.txt,然后重新Configure和Generate,然后maketest即可看到结果。
TutorialComp25...................***FailedRequiredregularexpre
ssionnotfound.Regex=[25is3
]0.01sec
Tu