在Linux C ++ IDE中等效于解决方案文件

时间:2019-01-04 14:37:17

标签: linux cmake

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

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

Linux中的构建输出是一堆.so文件(我在网上阅读的内容等同于Windows中的.dll文件)。

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

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

6 个答案:

答案 0 :(得分:1)

Linux不使用VS解决方案文件。它们特定于Windows和Visual Studio。您将需要使用cmake -G来生成适当的特定于平台的构建文件。即。其中之一,取决于您选择使用哪个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工具的支持。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

首先,新鲜的思维方式采用Linux。您的问题隐含地要求获得与Microsoft产品完全相同的产品,这是合理的,也不是Linux和其他Unix(及其下的软件开发)如何工作的原因。在Linux(和其他Unix系统,包括MacOSX)上,您可以结合多种工具来完成工作,例如compiler(例如GCCClang),链接器和相关实用程序(binutils),source code editor(我建议您有很多选择emacs,但您可以使用vimgeanygedit等。。。这的确是个问题。),像gdb这样的调试器(并且您真的想在命令行上使用它,因为它非常强大),version control(强烈推荐git),build automation工具(例如makeninja),也许是documentation generator,例如doxygen;也许您会使用C或C ++代码生成器(例如metaprogrammingbison)进行临时SWIGProtobuf等...或通过您自己的脚本(在外壳程序AWKPython中使用某些通用预处理器,例如GPPm4等)。 )。 cmake实用程序(我不喜欢)只是一个Makefile生成器(并且实际的构建是由make完成的),并且在许多情况下都写成Makefile手工比较简单。

尤其是,您将需要一些时间来学习如何以Linux方式做事。考虑到您可能需要几天或几周的阅读和学习时间。不要指望立即“运作”。花一些时间来学习command line工具和Unix shell

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

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

您可以使用Clion,但应注意还有其他方法可以这样做。首先,您可能会使用其他IDE,例如DEV+C++Code::Blocks等。然后,我不建议您盲目使用任何IDE,而应该能够组合其他工具(我喜欢使用{{1 }} + emacs + make + gdb),这意味着了解您的IDE正在为您启动的程序。

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

尝试构建一些现有的free software程序(从其源代码,例如在github上)。您将学到很多东西(并且您会了解它们通常是按Unix方式设计的。)

关于库,请阅读Program Library HowTo和更高版本的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系统,包括MacOSX(可能还有Android)。

答案 3 :(得分:0)

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

不确定其功能(与Windows版本相同吗?),但肯定应该有所帮助。

其他提示:我使用Codeblocks(仅作为增强的编辑器,不用于构建。为此,我仅使用makefiles),并且看来它可以导入Visual Studio项目/解决方案(无论这些术语意味着什么...)< / p>

最后,一旦选中某些复选框以设置正确的选项,任何好的IDE都应该能够从一堆源文件创建一个项目。

(免责声明:我确实退出Windows已有10年以上)

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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