簡體   English   中英

在OSX和Linux之間共享C ++程序?

[英]Sharing a C++ program between OSX and Linux?

我在Mac上用CLion編寫了一個相對較小的C ++程序。 我非常了解,CLion使用CMake編譯只能在我的Apple機器上運行的可執行文件。

我的項目包括“ ncurses”庫,但除此之外,它僅使用標准的C ++庫。 我的問題是,如何在運行Linux的另一台筆記本電腦上運行程序? 在平台之間(至少在Linux和OSX兩者都隨C / C ++編譯器一起提供)之間部署C ++應用程序的標准方法是什么? CMake是否必須在兩台計算機上都存在才能完成?

抱歉,這個非常籠統的問題是,我一直在學習如何編寫代碼,但實際上並不是在學習如何共享代碼!

對於處於類似情況的人,我執行了以下操作以在Mac和Linux之間共享我的代碼。

如我所說,CLion使用CMake。 我以為幕后工作會很多,但是事實證明,編譯源文件所需的全部就是CMakeLists文件,以及CMake本身的安裝。

CLion生成CMakeLists文件,但是可以從頭開始編寫,只需要大約5行即可開始編譯。 在其中,聲明要包含在編譯中的源文件,以及其他一些內容,例如最低CMake版本和項目使用的C ++版本。

還有什么進入CMakeLists提交一份很好的解釋在這里

我的Linux機器運行Ubuntu,而我使用的CMake版本是2.8.something-與我的Mac上的3.6相比還很早。 所以首先這意味着我必須將cmake_minimum_required(VERSION 3.6)更改為2.8

然后我嘗試運行cmake . 在包含源文件的目錄中,這會向終端拋出大量編譯錯誤。 其中大部分與模板類和花括號初始化有關-較新版本的C ++的功能。

這是因為CMake的set(CMAKE_CXX_STANDARD 11)語法(用於設置項目的C ++版本)不在CMake 2.8中。 將此行替換為set (CMAKE_CXX_FLAGS "-std=c++11")此問題。

另一cmake . 工作正常,然后將大量文件吐出到源目錄中。 我不確定它們全部做什么,但是它們都圍繞着生成的“ Makefile”。 在同一目錄中運行make編譯所有源文件並輸出一個可執行文件,效果很好。

ncurses庫似乎已經很好地扎入類Unix /基於Unix的系統中,因此我只需在代碼中包含#include即可使用和編譯該庫。 第三方庫可能需要更多工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM