怎么用CMake编译freeglut

怎么用CMake编译freeglut,第1张

1、解开freeglut-3.0.0的压缩包,用记事本打开目录树下的“README.cmake”文件,下载Binary distributions。

2、下载好,解开其压缩包后,找到可执行文件,cmake-3.2.2-win32-x86/bin/cmake-gui.exe,运行之,

3、在两个where后边填上目录树的路径(注意不是src的路径,本文以R:/freeglut-3.0.0为例),点击configure按钮,d出如下的对话框,从中选择所需的开发环境:

4、这里支持的环境好多,选择需要的环境,然后点击Finish,它会开始检查这个环境,然后给出一些配置选项:

5、从中修改静态库目标的安装位置(本例安装在R:/freeglut_static),勾掉不需要的选项(比如Demo、动态连接库等),点击Generate,即可生成工程。

6、打开工程后,找到工程设置,在此可以按照自己的需要修改一些配置,实际上绝大多数都不必动,有可能需要修改的也就是这么个地方:

7、这个按照自己的需要选择单线程运行库或是多线程运行库,或是多线程的DLL版运行库,主要是为了防止和别的库或者别的工程的设置冲突。

然后批量编译

8、勾掉不必要的选项,比如MinSizeRel是在Release版本的基础上,改成最小尺寸优化的版本;RelWithDebInfo是在Release版本的基础上,添加调试信息的版本。这俩版本的可以不要。然后,点击Rebuild All,编译完就可以在安装目录下找到最终文件了。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。

对于大型工程项目,我们往往需要引入一些第三方库来帮助我们更好的解决问题,对于第三方库,有的是编译好的,有的是源码,情况不同,处理方式不同,由于笔者这方面也是刚入门,所以在此记下笔记,以备后续需要.

1.对于有.cmake的第三方库:

list(APPEND CMAKE_PREFIX_PATH "./thirdParty/opencv/build")   #.cmake所在路径  find_package(OpenCV REQUIRED)                                                             add_executable(project main.cpp)

target_link_libraries(project ${OpenCV_LIBS})                                  #将exe与第三方库链接

2.对于需要源码编译(例如src文件夹中含有一堆.h,.cpp文件等)

file(GLOB_RECURSE <变量名>"src/ .hpp" "src/ .cpp" "src/ .h" "src/ .c")  

add_library(<库名>STATIC ${变量名})          

3.对于已经编译好的第三方库

add_library(<库名>INTERFACE IMPORTED)      #将已编译好的include和lib封装成你想要的库 target_include_directories(<库名>INTERFACE <include文件夹所在路径>)

target_link_directories(<库名>INTERFACE <lib文件夹所在路径>)

target_link_libraries(<库名>INTERFACE <需要的.lib文件>)

4.将很多第三方库统一放在一个文件夹 “thirdparty” 下

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set_target_properties(<库名>PROPERTIES FOLDER "thirdparty")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8003011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存