如何在Linux上构建Visual C++项目?

40

如何在Linux上构建一个使用Visual Studio编写的C++应用程序?代码本身已经准备好了——我只使用了跨平台库。

在Windows下,可以使用Visual Studio准备所有内容,然后在Linux下使用CLI工具进行构建吗?是否有相关文档说明?

编辑:更多信息:

  • 使用的库:stl、wxwidgets、boost、asio、cryptlib。

  • 对Linux知识很少。

编辑#2:我选择了以下解决方案:使用kdevelop创建新项目并在其中编译所有内容。

4个回答

19
我们正在为Linux项目使用CMake。CMake可以生成KDevelop和Visual Studio项目文件,因此您只需将CMake文件创建为特定平台IDE文件的起点即可。 KDevelop生成器很好用,因此您可以在KDevelop中编辑和编译(这将调用Make)。
另一方面,如果您没有什么花哨的需要,您可以使用CMake或Make来构建Linux上的东西,如果您想保留解决方案文件(这是我目前为具有测试应用程序的库所做的)。 当您的构建过程不仅仅是“将这些文件扔给编译器,然后看看它会做什么”时,此方法会变得复杂,因此,在我看来,CMake解决方案对于跨平台开发来说是一个好事。

我想让它这样,我可以使用现有的VisualStudio设置并将其保存为makefile?并在Linux下使用它。这可能吗? - mspoerr
2
Visual C++,至少在一段时间内,支持将项目/解决方案导出为makefile。你可以尝试一下,但生成的makefile非常混乱(或者在那个时候是这样的)。你也可以尝试创建一个XSLT来转换项目文件(不包括解决方案)成任何你想要的格式,包括Makefile或CMake文件。 - OregonGhost

8

8年后...

今天我偶然发现了这个问题,想让你看看 Visual C++ for Linux

VC++ for Linux于2016年3月发布,它允许您在VC++中创建项目,然后使用本地Linux工具在Linux机器/虚拟机中构建它。更重要的是,由于Linux工具允许VS调试器通过SSH驱动您的Linux机器/虚拟机中的GDB,因此您还可以从VS内部进行调试

看起来这几乎就是@mspoerr所要求的完美解决方案 :)


7

以下是在Linux下手动编译C代码而无需额外的构建工具的方法:

gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2

然而,如果你的项目大于几个文件,你可能需要使用构建工具(如CMake,请参见OregonGhost的答案)来自动化编译多个文件,并使其增量。如果你使用构建工具,它会在后台运行gcc,并使用上述类似的参数。了解上述参数很有用,这样如果你自动化构建失败,你就可以进行故障排除。
这将把code1.c和code2.c编译为可执行文件prog,从.、includedir1和includedir2加载.h文件,从libdir1和libdir2目录加载库(例如libuse1.so*和libuse2.so*),使用use1和use2库(对应文件名为libuse1.so*)。
如果你的.c文件中出现未定义符号错误,你需要指定更多的-I标志。如果你在.o文件中出现未定义符号错误,你需要指定更多的-l标志。如果你遇到cannot find -l...错误,则需要指定更多的-L标志。

6
我假设他有不止一个文件。编译时不用Makefile很愚蠢。 - Zifre
1
@Zifre:我更新了我的答案,推荐了一个构建工具。我认为即使使用构建工具,我的答案仍然是有见地和有用的,可以用于故障排除。 - pts

4

如何最好最简单地将一个使用Visual Studio编写的C++应用程序构建为Linux版本?代码本身已准备就绪 - 我只使用了跨平台库。

  • 检查是否有任何不属于标准C ++的内容
  • 反复检查
  • 创建一个makefile或KDevelop项目

Et voilà!


1
这个 Makefile 可以从 VisualStudio 生成吗?需要哪些更改才能在 Linux 下运行? - mspoerr
2
某些版本的VS可以为nmake生成makefiles——这是一个基于Windows CLI的构建系统。在*nix系统上找到的make有点不同。您需要清除差异。在我看来,要么更容易地使用Code::Blocks(或一些跨平台IDE)和gcc在Windows上获得构建系统,然后在Linux上使用它,要么使用类似于VS的外观和感觉的KDevelop添加源文件/库等,并为您创建一个基于autoconf的构建系统。 - dirkgently

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接