Как добавить компиляцию Linux в Cmake Project в Visual Studio

Visual Studio добавил много новых функций для C++ в прошлом году.

CMake С поддержкой CMake я могу сделать "Открыть папку" и выбрать папку с файлом CMakeLists.txt. Visual Studio проделывает большую работу, обнаруживая и создавая ее автоматически.

Компиляция Linux Visual Studio теперь поддерживает удаленную компиляцию в Linux через SSH. В нескольких руководствах показано, как пользователи могут создавать новое "консольное приложение Linux" в Visual Studio, и автоматически запрашивается настройка SSH-соединения, которое будет использоваться для его построения. Я не вижу каких-либо инструкций о том, как сделать это на существующем проекте любого рода.

Можно ли, в частности, в проекте CMake открыть папку CMake в Visual Studio 2017 и установить ее на удаленной машине с Linux? IfSoHow?

2 ответа

Решение

В CMake пока нет встроенной поддержки VS "Linux Console Application" (как для CMake версии 3.9).

Изменить: Visual Studio 2017 15.4 теперь поставляется с чем-то похожим, без создания фактического .vcxproj файлы. См. Visual C++ для разработки Linux с 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}"
)

Это на самом деле работает и производит Linux .vcxproj проект, который принят VS. Но так как мы обошли CMake здесь, никакие другие опции компилятора / компоновщика, которые вы определили в своем скрипте CMake, не будут назначены.

Поэтому я рекомендую поднять запрос функции для самого CMake, чтобы напрямую поддерживать это (например, с помощью набора инструментов платформы). Remote_GCC_1_0).

Кажется, он пока не работает так, как вы ожидаете. Кажется, вам нужно создать отдельный Linux vcproject для существующей кодовой базы cmake. В настройках VS нет ничего похожего на цель linux. Для получения дополнительной информации см. Комментарии в этом блоге msdn.

Вы можете либо создать "новый проект Linux" и скопировать свои исходные коды, либо попробовать (и адаптировать), используя для существующих источников эти неофициальные сценарии: https://github.com/robotdad/vclinux

Другие вопросы по тегам