如何在Visual Studio中将Linux编译添加到Cmake项目

sol*_*ngJ 7 c++ cmake visual-studio windows-subsystem-for-linux

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?

Flo*_*ian 10

在CMake中没有对VS"Linux控制台应用程序"的内置支持(与CMake版本3.9一样).

编辑: Visual Studio 2017 15.4现在提供类似的东西而不生成实际.vcxproj文件.请参阅使用CMake进行Linux C++的Visual C++

除了与描述的可能性一个标准版本的CMake 这里使用现有的.vcxproj文件作为模板,你只能欺骗的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}"
)
Run Code Online (Sandbox Code Playgroud)

这实际上可以工作并产生一个.vcxproj被VS接受的Linux 项目.但是,由于我们在此处回避了CMake,因此不会分配您在CMake脚本中定义的其他编译器/链接器选项.

所以我的建议是提出一个功能请求,让CMake自己直接支持这个(例如通过平台工具集选项Remote_GCC_1_0).