1、CMake使用步骤:运行GUI的cmake界面:cmake-2.8.1-win32-x86/bin/cmake-gui.exe执行Configure:运行之后,生成了如下文件:生成Makefile:执行Generate之后生成如下文件:运行make进行编译:编译完成后,在build目录生成Tutorial.exe,运行Tutorial.exe 25就可以看到运行结果:运行make install安装程序:运行make test进行测试:通过cmake tutorial学习CMake配置方法/www.cmake.org/cmake/help/cmake_tutorial.html可以在源代码的T
2、ests/Turorial目录中找到这个手册对应的代码。1、Step1。(如果不知道如何使用cmake,以及如何使用编译产生的Turorial.exe,可先看下前面“CMake使用步骤”的说明,它以Step4为例详细介绍了使用过程,Step1的配置可能不够完全,比如无法运行make install,无法运行make test,但可以参考。)简单的程序编译。(1)运行GUI的cmake,指定要编译的源代码路径和二进制文件路径(会自动创建)。(2)点击Configure,配置成功后,再点击Generate。配置需要选择合适的编译器,虽然我安装了VC2008,但没有配置成功;选择Unix Makef
3、iles,配置成功,它自动找到了DevC+下的gcc.exe等编译器。(3)在build3目录执行make,就能够编译生成Turorial.exe了。D:/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step1/build3makeLinking CXX executable Tutorial.exe100% Built target Tutorial可以运行一下Turorial.exe:Tutorial.exeTutorial.exe Version 1.0Usage: Tutorial.exe numberTutorial.exe 4T
4、he square root of 4 is 22、Step2把子目录编译为库,并且链接到最终的可执行文件。include_directories ($PROJECT_SOURCE_DIR/MathFunctions)add_subdirectory (MathFunctions)# 使得子目录MathFunctions也能被编译# add the executableadd_executable (Tutorial tutorial.cxx)target_link_libraries (Tutorial MathFunctions)产生makefile:在GUI上点击Configure,之后
5、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% Building CXX obj
6、ect MathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cxx.objLinking CXX static library libMathFunctions.a 50% Built target MathFunctions3、Step3支持make install把程序安装到系统指定目录,并且运行一些测试检查它是否能够正常工作。a、安装时使用的基础目录,由CMAKE_INSTALL_PREFIX指定。b、可以通过一个很简单的用例检查程序是否运行起来,没有出现异常。(TurotialRuns只是一个用例名字)add_test (Tutorial
7、Runs Tutorial 25)c、macro方式进行多组数据的测试是非常简洁方便的。#define a macro to simplify adding tests, then use itmacro (do_testarg result)add_test (TutorialComp$arg Tutorial $arg)set_tests_properties (TutorialComp$argPROPERTIES PASS_REGULAR_EXPRESSION $result)endmacro (do_test)# do a bunch of result based testsdo_t
8、est (25 25 is 5do_test (-25 -25 is 0执行make install:/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/buildmake install 50% Built target MathFunctions100% Built target TutorialInstall the project.- Install configuration: - Installing: C:/Program Files/Tutorial/bin/Tutorial.exe/Program Files/Tut
9、orial/include/TutorialConfig.h/Program Files/Tutorial/bin/libMathFunctions.a/Program Files/Tutorial/include/MathFunctions.h安装结果:C:/Program Files/Tutorialtree /f.bin libMathFunctions.a Tutorial.exeincludeMathFunctions.hTutorialConfig.h执行make test:make testRunning tests.Test project D:/Projects/Lab/te
10、stngpp/cmake-2.8.1/Tests/Tutorial/Step3/buildStart 1: TutorialRuns1/5 Test #1: TutorialRuns . Passed 0.01 secStart 2: TutorialComp252/5 Test #2: TutorialComp25 . Passed 0.01 secStart 3: TutorialNegative3/5 Test #3: TutorialNegative . Passed 0.01 secStart 4: TutorialSmall4/5 Test #4: TutorialSmall .
11、Passed 0.00 secStart 5: TutorialUsage5/5 Test #5: TutorialUsage . Passed 0.00 sec100% tests passed, 0 tests failed out of 5Total Test time (real) = 0.13 sec修改一个测试用例,让它不过:修改顶层CMakeLists.txt,然后重新Configure和Generate,然后make test即可看到结果。 TutorialComp25 .*Failed Required regular expression not found.Regex=25 is 3 0.01 sec Tu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1