我在Mac上用CLION编写了一个相对较小的C ++程序。 CLion使用CMake编译一个只能在我的Apple机器上运行的可执行文件,我知道这一点。
我的项目包括' ncurses'库,但除此之外它只使用标准的C ++。我的问题是,如何在运行Linux的另一台笔记本电脑上运行我的程序?在平台之间部署C ++应用程序的标准方法是什么,至少在Linux和OSX之间,它们都带有C / C ++编译器?为了完成这项工作,两台机器上都必须存在CMake吗?
对于非常一般的问题,我很抱歉,我一直在学习如何编写代码,但实际上并不是如何分享代码!
答案 0 :(得分:1)
对于处于类似情况的人,我做了以下操作,在Mac和Linux之间共享我的代码。
正如我所说,CLion使用CMake。我认为会有很多内容发生,但事实证明,编译源文件所需的只是CMakeLists文件,以及CMake本身的安装。
CLion生成CMakeLists文件,但它可以从头开始编写,只需要大约5行就可以开始编译。在其中,您声明要包含在编译中的源文件,以及其他一些内容,例如最小CMake版本和项目使用的C ++版本。
对CMakeLists文件here的内容有一个很好的解释。
我的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的系统,所以我能够在我的代码中只使用#include
来使用和编译这个库。第三方图书馆可能需要更多的工作!