【问题标题】:How to Add Linux Compilation to Cmake Project in Visual Studio如何在 Visual Studio 中将 Linux 编译添加到 Cmake 项目
【发布时间】:2017-11-12 02:29:54
【问题描述】:

Visual Studio 在过去一年中为 C++ 添加了许多新功能。

CMake 借助 CMake 支持,我可以执行“打开文件夹”并选择一个包含 CMakeLists.txt 文件的文件夹。 Visual Studio 在自动发现和构建它方面做了很多出色的工作。

Linux 编译 Visual Studio 现在支持通过 SSH 在 Linux 上进行远程编译。一些教程展示了用户如何在 Visual Studio 中创建新的“Linux 控制台应用程序”,它会自动要求设置 SSH 连接以用于构建它。我没有看到任何关于如何在任何类型的现有项目上执行此操作的说明。

特别是对于 CMake 项目,是否可以在 Visual Studio 2017 中打开 CMake 文件夹并将其构建在远程 Linux 机器上? IfSoHow?

【问题讨论】:

标签: c++ visual-studio cmake windows-subsystem-for-linux


【解决方案1】:

CMake 中还没有对 VS“Linux 控制台应用程序”的内置支持(对于 CMake 版本 3.9)。

编辑: Visual Studio 2017 15.4 现在带有类似的功能,但不会生成实际的 .vcxproj 文件。见Visual C++ for Linux Development with CMake

除了使用现有的.vcxproj 文件作为模板描述here 的可能性之外,使用标准CMake 版本,您只能诱使CMake 生成这些项目类型:

cmake_minimum_required(VERSION 3.7)

project(HelloLinux)

file(WRITE main.cpp [=[
#include <iostream>

int main()
{
    std::cout << "Hello from Linux Console!" << std::endl;
}
]=])

add_executable(HelloLinux "main.cpp")

set_target_properties(
    HelloLinux
    PROPERTIES
        VS_GLOBAL_KEYWORD "Linux"
        VS_GLOBAL_ApplicationType "Linux"
        VS_GLOBAL_ApplicationTypeRevision "1.0"
        VS_GLOBAL_TargetLinuxPlatform "Generic"
        VS_GLOBAL_LinuxProjectType "{D51BCBC9-82E9-4017-911E-C93873C4EA2B}"
)

这实际上有效并生成了一个被 VS 接受的 Linux .vcxproj 项目。但是由于我们在这里避开了 CMake,因此您在 CMake 脚本中定义的其他编译器/链接器选项都不会被分配。

所以我的建议是 raise a feature request 让 CMake 本身直接支持这一点(例如,通过平台工具集选项 Remote_GCC_1_0)。

【讨论】:

    【解决方案2】:

    它似乎还没有像您期望的那样工作。看来您需要为现有的 cmake 代码库创建单独的 linux vcproject。 VS 选项中没有像 linux 目标那样的东西。有关更多信息,请参阅此 msdn blog 中的 cmets。

    您可以创建“新的 linux 项目”并复制您的源代码,或者尝试(并调整)将这些非官方脚本用于现有源代码: https://github.com/robotdad/vclinux

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      相关资源
      最近更新 更多