如何在 Visual Studio 中向 Cmake 项目添加 Linux 编译
How to Add Linux Compilation to Cmake Project in Visual Studio
Visual Studio 在过去的一年中为 C++ 添加了许多新功能。
CMake
借助 CMake 支持,我可以创建 "Open Folder" 和 select 一个包含 CMakeLists.txt 文件的文件夹。 Visual Studio 在自动发现和构建它方面做了很多不错的工作。
Linux 编译
Visual studio 现在支持通过 SSH 在 Linux 上进行远程编译。一些教程展示了用户如何在 Visual Studio 中创建一个新的 "Linux Console Application",它会自动要求设置 SSH 连接以用于构建它。我没有看到任何关于如何在任何类型的现有项目上执行此操作的说明。
特别是对于 CMake 项目,是否可以在 Visual Studio 2017 年打开一个 CMake 文件夹并在远程 Linux 机器上构建它?如果是如何?
它似乎没有像您预期的那样工作。您似乎需要为现有的 cmake 代码库创建单独的 linux vcproject。 VS 选项中没有 linux 目标之类的东西。有关详细信息,请参阅此 msdn blog.
中的评论
您可以创建 'new linux project' 并复制您的来源或尝试(并改编)对现有来源使用这些非官方脚本:
https://github.com/robotdad/vclinux
CMake 中还没有对 VS "Linux Console Application" 的内置支持(对于 CMake 3.9 版)。
编辑: Visual Studio 2017 15.4 现在带有类似的东西,但没有生成实际的 .vcxproj
文件。参见 Visual C++ for Linux Development with CMake
除了 描述的可能性之外,使用标准 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}"
)
这实际上有效并生成了一个被 VS 接受的 Linux .vcxproj
项目。但是由于我们在这里回避了 CMake,因此您在 CMake 脚本中定义的其他 compiler/linker 选项中的 none 将被分配。
所以我的建议是 raise a feature request 让 CMake 本身直接支持它(例如通过平台工具集选项 Remote_GCC_1_0
)。
Visual Studio 在过去的一年中为 C++ 添加了许多新功能。
CMake 借助 CMake 支持,我可以创建 "Open Folder" 和 select 一个包含 CMakeLists.txt 文件的文件夹。 Visual Studio 在自动发现和构建它方面做了很多不错的工作。
Linux 编译 Visual studio 现在支持通过 SSH 在 Linux 上进行远程编译。一些教程展示了用户如何在 Visual Studio 中创建一个新的 "Linux Console Application",它会自动要求设置 SSH 连接以用于构建它。我没有看到任何关于如何在任何类型的现有项目上执行此操作的说明。
特别是对于 CMake 项目,是否可以在 Visual Studio 2017 年打开一个 CMake 文件夹并在远程 Linux 机器上构建它?如果是如何?
它似乎没有像您预期的那样工作。您似乎需要为现有的 cmake 代码库创建单独的 linux vcproject。 VS 选项中没有 linux 目标之类的东西。有关详细信息,请参阅此 msdn blog.
中的评论您可以创建 'new linux project' 并复制您的来源或尝试(并改编)对现有来源使用这些非官方脚本: https://github.com/robotdad/vclinux
CMake 中还没有对 VS "Linux Console Application" 的内置支持(对于 CMake 3.9 版)。
编辑: Visual Studio 2017 15.4 现在带有类似的东西,但没有生成实际的 .vcxproj
文件。参见 Visual C++ for Linux Development with 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}"
)
这实际上有效并生成了一个被 VS 接受的 Linux .vcxproj
项目。但是由于我们在这里回避了 CMake,因此您在 CMake 脚本中定义的其他 compiler/linker 选项中的 none 将被分配。
所以我的建议是 raise a feature request 让 CMake 本身直接支持它(例如通过平台工具集选项 Remote_GCC_1_0
)。