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

问题描述 投票:0回答:1

我在Mac上用CLion编写了一个相对较小的C ++程序。 CLion使用CMake编译一个只能在我的Apple机器上运行的可执行文件,我知道这一点。

我的项目包括'ncurses'库,但除此之外它只使用标准的C ++库。我的问题是,如何在运行Linux的另一台笔记本电脑上运行我的程序?在平台之间部署C ++应用程序的标准方法是什么,至少在Linux和OSX之间,它们都带有C / C ++编译器?两台机器上是否必须存在CM才能完成此操作?

对于非常一般的问题我很抱歉,我一直在学习如何编写代码但不是真的如何分享它!

c++ linux macos cmake
1个回答
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的系统,所以我能够在我的代码中使用#includeing来使用和编译这个库。第三方图书馆可能需要更多的工作!

© www.soinside.com 2019 - 2024. All rights reserved.