Windows下使用CMake進階


CMake入門實踐一文中,我們初略的介紹了CMake的跨平台性和使用方法。
本文將學習在Windows下如何系統的使用CMake,會涉及到msbuild ,nmake等Windows本地的工具庫,如果不是很了解,可以先百度看看。
cmake有Windows的GNU工具,這個工具很傻瓜化,這里不做介紹。

回顧代碼工程中有什么

  1. 源文件 如cpp 文件
  2. 頭文件 如h文件
  3. 我們自己的庫文件 ,lib 或者dll文件
  4. 三方庫,不過一般而言,我們使用庫文件的lib或者dll然后加上它的頭文件即可
  5. 資源文件
  6. 其他?

將需要的東西在cmake腳本CMakeLists.txt中申明

CMakeLists.txt的寫法規則及語法:
該文很全面了,我不再造輪子了

一鍵型編譯

CMakeLists.txt 文件寫好后,我們就可以開始編譯了,和之前的介紹的一樣,我們最好將編譯生成的文件全部放入一個中間文件夾中。
linux下的一鍵編譯是非常優美的,windows程序員因為被VS等IDE包養,並不是很願意使用黑壓壓的命令行工作,但是,我會告訴你,使用命令行工作已經是大勢所趨了。你不僅需要熟悉命令行工作,更應該擅長此道。
widows下也有自己的命令行編譯工具,比如msbuild,nmake等。這兩個工具是和VS一起升級維護的,所以對於像筆者這樣,一台機器安裝3個版本的VS的人,要使用正確版本的編譯工具其實需要走些路。

使用nmake

以下是筆者希望使用VS2008的nmake需要完成的工作:

  1. 首先打開cmder
  2. 找到VS2008的安裝路徑,比如筆者的是E:\Program Files\Microsoft Visual Studio 9
  3. 在cmder中輸入 "E:\Program Files\Microsoft Visual Studio 9\VC\vcvarsall.bat" x86(雙引號很重要,必須, x86表示我希望編譯32位程序)
  4. 環境配置完成后,切換路徑到win-build(這是我自定義的代碼生成中間文件夾,外圍才是我的工程代碼)輸入cmake .. -G "NMake Makefiles"
  5. 然后輸入nmake
  6. 編譯無誤后生成了可執行程序

補充說明:

  • 使用其他編譯環境同VS2008即可,找到該版本的VS的目錄,輸入命令配置nmake環境
  • 該配置環境只在本次控制台有效,不會影響你的系統配置

使用msbuild

使用msbuild的步驟和nmake大同小異:
將上面第4步的cmake .. -G "NMake Makefiles" 換成 cmake .. -G "Visual Studio 9 2008"
將上面第5步的nmake 換成 MSBuild.exe Project.sln 這個Project.sln 換成你自己的工程名即可

實現一鍵編譯

可以把命令寫成bat腳本 ,做到真正的一鍵編譯。

echo off

echo 'start cmake in windows'

call "e:/Program Files/Microsoft Visual Studio 9/VC/vcvarsall.bat" x86

cd  win-build

cmake .. -G "NMake Makefiles"

nmake

echo 'end all'

其他可以參考,將該bat文件放在和cmake腳本文件同路徑下,即可一鍵生成exe執行文件。

參考

官方指導

https://blog.csdn.net/qq_22042587/article/details/78850708

https://blog.csdn.net/yaoyuanyylyy/article/details/79024962

http://www.360doc.com/content/14/1113/13/9075092_424804822.shtml

https://blog.csdn.net/gxuan/article/details/7701035

https://blog.csdn.net/yanchuang1/article/details/69683236

https://www.cnblogs.com/cv-pr/p/6206921.html

https://blog.csdn.net/libaineu2004/article/details/78995740


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM