由于我一直在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生成相同的文件?
答案 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(例如GCC或Clang),链接器和相关实用程序(binutils),source code editor(我建议您有很多选择emacs,但您可以使用vim,geany,gedit等。。。这的确是个问题。),像gdb这样的调试器(并且您真的想在命令行上使用它,因为它非常强大),version control(强烈推荐git),build automation工具(例如make或ninja),也许是documentation generator,例如doxygen;也许您会使用C或C ++代码生成器(例如metaprogramming,bison)进行临时SWIG,
Protobuf等...或通过您自己的脚本(在外壳程序AWK,Python中使用某些通用预处理器,例如GPP或m4等)。 )。 cmake
实用程序(我不喜欢)只是一个Makefile
生成器(并且实际的构建是由make
完成的),并且在许多情况下都写成Makefile
手工比较简单。
尤其是,您将需要一些时间来学习如何以Linux方式做事。考虑到您可能需要几天或几周的阅读和学习时间。不要指望立即“运作”。花一些时间来学习command line工具和Unix shell。
如果您正在为Linux编程(特别是在C ++或C中),则还需要了解Linux编程(这需要一些时间)。阅读诸如ALP之类的书籍或其他较新的书籍。请注意syscalls(2)。在某些情况下,您可能会对C ++框架感兴趣,例如Qt,POCO,Boost等(但我相信您仍然需要了解Linux编程的基础知识,即使您使用这些框架也是如此。
阅读Unix philosophy上的维基页面。它解释了恕我直言,组合工具的Unix视图对您的任务的优越性。
您可以使用Clion,但应注意还有其他方法可以这样做。首先,您可能会使用其他IDE,例如DEV+C++,Code::Blocks等。然后,我不建议您盲目使用任何IDE,而应该能够组合其他工具(我喜欢使用{{1 }} + emacs
+ make
+ gdb
),这意味着了解您的IDE正在为您启动的程序。
使用GCC(或Clang)编译C或C ++代码时,请确保启用所有警告和调试信息(因为默认情况下未启用警告和调试信息)。因此,将git
传递给-Wall -Wextra -g
或gcc
(或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)
答案 5 :(得分:0)
Cmake和CMakelits.txt是管理cpp项目的良好开端。
您可以使用Clion来更轻松地配置工具集。
https://www.jetbrains.com/clion/
我认为这里的第一个答案是linux geek,他们希望所有使用linux的人都喜欢他们。不,人们喜欢使用linux并获得一个可以为您提供工具集的程序。不要从头开始构建自己的工具集。是的,您可以在linux上完成它,是的,如果您是linux极客,您实际上可以享受它,但是大多数人只是想把事情做好。 请让他们进入linux,并使这个社区变得更大更幸福。