【问题标题】:What is the equivalent of Solution files in Linux C++ IDELinux C++ IDE中解决方案文件的等价物是什么
【发布时间】:2019-01-04 14:37:17
【问题描述】:

我对 Linux 中的 C++ 开发非常陌生,因为我一直使用 Windows 中的 Visual Studio 进行开发。

有一个 C++ 项目,该项目的设计方式是使用 CMakeLists.txt 文件构建。我很难在 Windows 中构建相同的东西,但幸运的是,我可以在 Linux 中构建它。

Linux 中的构建输出是一堆 .so 文件(我在网上看到的相当于 Windows 中的 .dll 文件)。

我打算在 Linux C++ IDE 中打开解决方案文件(我目前正在使用 CLion),就像在 Windows 中的 Visual Studio 中使用解决方案(.sln 文件)一样。我不确定如何在 Linux C++ IDE 中打开项目文件,以及如何在 Linux 中使用 Cmake 生成相同的项目文件。在这方面的任何帮助都会非常有帮助。

什么是 VS 解决方案文件在 Linux 中的等价物,我想在基于 Linux 的 C++ IDE(例如 CLion)中打开我的项目文件,如何在 Linux 中使用 Cmake 生成相同的文件?

【问题讨论】:

  • 使用 CLion,您应该能够将顶级 CMakeLists.txt 作为项目文件打开
  • 恕我直言,这是题外话,可能会被关闭:您正在寻求一些软件推荐,是吗?
  • @kebs,我不是要求任何软件推荐,而是在 Linux IDE 中打开 C++ 项目文件的过程,因为我是 Linux IDE 的新手,以及这些文件是如何在 Linux 中生成的。跨度>
  • @Peter Linux 有几个不同的构建系统和 IDE,它们都有自己的做事方式。 Makefile 通常是您在 Linux 上的最佳选择,因为它们的工具是 GNU 的一部分。有关更多信息,请参阅我的答案。
  • @Peter 如前所述,Clion 允许您直接打开 CMakeLists.txt 文件。请参阅jetbrains.com/clion/features/start-your-project.html 的底部。您无需先运行 cmake 即可生成项目文件。现在 - 其他 Linux IDE 可能不支持。

标签: linux cmake


【解决方案1】:

首先,新鲜的心态接触 Linux。

您的问题隐含地要求与 Microsoft 产品完全等效,这是合理的,也不是 Linux 和其他 Unix(及其下的软件开发)的工作方式。在 Linux(和其他 Unix 系统,包括 MacOSX)上,您将为您的工作组合几个工具,例如一个compiler(例如GCCClang),一个链接器和相关实用程序(binutils),一个source code editor(你有很多选择,我推荐emacs,但你可以使用@987654327 @、geanygedit 等等……这真的是一个品味问题),一个像 gdb 这样的调试器(你真的想在命令行上使用它,因为它非常强大),一个version control(我强烈推荐git,但也要考虑mercurial),build automation 工具(如makeninja),也许是documentation generator,如doxygen;也许您会使用 C 或 C++ 代码生成器(例如 bisonSWIGProtobufRefPerSys 等...或通过您自己的脚本(在 shell 中,AWKPython、一些通用预处理器,如 GPPm4 等);你也可以编写自己的GCC plugincmake 实用程序(我不喜欢)只是一个 Makefile 生成器(实际构建由 make 完成),在许多情况下,手动编写 Makefile 更简单。

特别是,您将需要一些时间来学习如何以 Linux 方式做事。阅读Advanced Linux Programming,然后阅读syscalls(2)考虑到您可能需要几周的阅读和学习时间。不要期望立即“运行”。花点时间学习command line 工具和Unix shell

如果您正在为 Linux 编程(尤其是使用 C++ 或 C),您还需要了解 Linux 编程(这需要一些时间)。阅读诸如ALP 之类的书或更新的书。请注意syscalls(2)。在某些情况下,你可能会对QtPOCOBoostFLTK 等 C++ 框架感兴趣……(但我相信你仍然需要了解 Linux 编程的基础知识,即使你使用这些框架)。

阅读Unix philosophy 上的维基页面。恕我直言,它解释了 Unix 视图组合工具来完成您的任务的优越性。

您可以使用Clion,但您应该知道还有其他方法可以做到这一点。首先,你可能会使用其他IDE,例如DEV+C++Code::Blocks等。然后我不建议盲目使用任何IDE,但可以结合其他工具(我喜欢使用emacs + make + gdb + git 一起),这意味着了解您的 IDE 正在为您启动的程序。

使用GCC(或Clang)编译 C 或 C++ 代码时,请务必启用所有警告和调试信息(因为默认情况下不启用警告和调试信息)。所以将-Wall -Wextra -g 传递给您的gccg++(或clang++)编译命令。稍后(调试程序时)您可以传递一些优化标志(如-O2)。阅读如何invoke GCC

尝试构建一些现有的free software 程序(从它们的源代码,例如在github 上)。你会学到很多东西(你会明白它们通常是以 Unix 方式设计的)。

关于库,请阅读Program Library HowToC++ dlopen mini HOWTOGCCBinutilsGNU makeGNU autoconfGNU bash 的文档。以及后来的 Drepper 的 How to write shared libraries。请注意,plugin 机制在 Linux(参见 dlopen(3)dlsym(3))和 Windows 上非常不同(Levine 关于 Linkers and Loaders 的书很好地解释了这一点)。

我还建议阅读Operating Systems: Three Easy Pieces 教科书(免费提供)。

Linux 主要由free software 组成,有时研究其中一些的源代码非常有用。

Linux中VS解决方案文件的等价物是什么?

没有,我的回答解释了原因(以及为什么你甚至不应该梦想找到一个)。您将发明另一种在 Linux 上构建软件的方法。

PS。上面的大部分答案不仅适用于 Linux,还适用于其他 Unix 或 POSIX 系统,包括 MacOSX(可能还有 Android)。

【讨论】:

  • @BasileStarynkevitch 可能是因为你推荐 emacs 而不是 vim。
【解决方案2】:

解决方案文件 (.sln) 和 C++ 项目文件 (.vcxproj) 是 Visual Studio 自定义格式(更具体地说,它们是 Microsoft 的 MSBuild 构建系统的一部分)。可能可以找到(或编写)另一个可以读取这些文件并模拟 MSBuild 的 IDE 的扩展,但如果您有 CMake 配置文件 (CMakeLists.txt),您应该能够打开该目录或其包含目录作为CLion 中的项目(正如 cmets 中所指出的那样)。

如果您没有该文件,并且该项目不需要特别复杂的构建步骤,那么您可能只需“从现有源”创建一个新的 CLion 项目;它应该能够为您生成 CMake 文件。

【讨论】:

    【解决方案3】:

    Linux 不使用 VS 解决方案文件。它们特定于 Windows 和 Visual Studio。您将需要使用cmake -G 来生成适当的特定于平台的构建文件。 IE。其中之一,取决于您选择使用的 IDE:

    Unix Makefiles               = Generates standard UNIX makefiles.
    Ninja                        = Generates build.ninja files.
    Watcom WMake                 = Generates Watcom WMake makefiles.
    CodeBlocks - Ninja           = Generates CodeBlocks project files.
    CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.
    CodeLite - Ninja             = Generates CodeLite project files.
    CodeLite - Unix Makefiles    = Generates CodeLite project files.
    Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
    Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
    KDevelop3                    = Generates KDevelop 3 project files.
    KDevelop3 - Unix Makefiles   = Generates KDevelop 3 project files.
    Kate - Ninja                 = Generates Kate project files.
    Kate - Unix Makefiles        = Generates Kate project files.
    Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
    Sublime Text 2 - Unix Makefiles
                               = Generates Sublime Text 2 project files.
    

    由于您使用的是 CLion,我建议您使用 cmake -G "Unix Makefiles",它受到几种流行的 Linux C++ IDE 以及 Linux 上普遍存在的 GNU/Linux 工具的支持。

    【讨论】:

      【解决方案4】:
      • 没有“Linux C++ IDE”之类的东西,因为有很多
      • CMakeLists.txt 是“解决方案文件”的跨平台等效项

      【讨论】:

        【解决方案5】:

        Cmake 和 CMakelits.txt 是管理 cpp 项目的良好开端。
        您可以使用 Clion 进行更简单的配置工具集。
        https://www.jetbrains.com/clion/

        我认为这里的第一个答案是 linux 极客,希望所有使用 linux 的人都像他们一样。不,人们喜欢使用 linux 并获得一个可以为您提供一组工具的程序。不要从头开始构建自己的工具集。是的,您可以在 linux 上完成,是的,如果您是 linux 极客,您实际上可以享受它,但是大多数人只是希望事情完成。 请让他们进入linux,让这个社区更大更快乐。

        【讨论】:

          【解决方案6】:

          要完成其他答案,微软似乎提供了 Linux 版本的 Visual Studio,请参阅 https://code.visualstudio.com/download

          不太确定它的功能(它与 Windows 版本相同吗?),但它肯定会有所帮助。

          其他提示:我使用 Codeblocks(仅作为增强型编辑器,不用于构建。为此我只使用 makefile),它似乎可以导入 Visual Studio 项目/解决方案(无论这些术语是什么意思......)

          最后,只要您勾选了一些复选框以设置正确的选项,任何好的 IDE 都应该能够从一堆源文件创建项目。

          (免责声明:我确实退出使用 Windows 超过 10 年)

          【讨论】:

          • Visual Studio Code 是一个完全独立的 IDE,可在 Windows、Mac 和 Linux 上使用;据我所知,它本身并不支持 MSBuild 系统。它确实支持多种语言,但需要外部工具进行编译,根据我的经验,它作为代码编辑器比完整的 IDE 更好。如果 OP 可以访问 CLion,那对于 C++ 来说绝对是比 VS Code 更好的选择。
          • 第三个称为 Visual Studio for Mac,它纯粹是一个 C# IDE。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-10
          • 2013-11-18
          • 2014-05-08
          • 1970-01-01
          • 2010-12-28
          • 1970-01-01
          相关资源
          最近更新 更多