Как сделать проект Visual Studio 2017 C ++ более переносимым между компьютерами?

Это не перестановки, см. определения перестановок из Википедии.

Но вы можете добиться этого с помощью рекурсии:

var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']]

function allPossibleCases(arr) {
  if (arr.length == 1) {
    return arr[0];
  } else {
    var result = [];
    var allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array
    for (var i = 0; i < allCasesOfRest.length; i++) {
      for (var j = 0; j < arr[0].length; j++) {
        result.push(arr[0][j] + allCasesOfRest[i]);
      }
    }
    return result;
  }

}

Вы также можете сделать это с петлями, но это будет немного сложно, и вам потребуется реализовать свой собственный аналог стека.

3
задан Ivan P. 13 July 2018 в 04:30
поделиться

2 ответа

Как говорит @gaurav, способ справиться с этим в Visual Studio - с листами свойств . К сожалению, этот термин используется для двух разных вещей в VS, но я думаю, что они просто закончили имена (предупреждение о спойлере).

Это очень мощные, как только вы узнаете как они работают, и они именно то, что вам нужно здесь, потому что они позволяют вам определять макросы, и эти макросы могут, в свою очередь, использоваться в остальной части вашего проекта, чтобы ссылаться на (изменчивое) местоположение ваших различных библиотек. Это трюк, который каждый, кто использует VS, должен знать, но кажется, что многие люди этого не делают.

Я не думаю, что это стоит того, чтобы я пытался провести вас через механику настройки здесь, поскольку Microsoft уже документирует его в файле справки Visual Studio. Достаточно сказать, что вы делаете это в Property Manager, что должно помочь вам отследить соответствующую информацию.

Здесь также есть отличная запись в блоге, которую я рекомендую вам прочитать, прежде чем делать что-либо еще:

http://www.dorodnic.com/blog/2014/03/20/visual-studio-macros/

Это также на Wayback Machine здесь:

https://web.archive.org/web/20171203113027/http://www.dorodnic.com/blog/2014/03/20/visual-studio-macros/

Хорошо, теперь мы знаем, как определить макрос, что мы можем с ним сделать?

Ну, на самом деле это легкая часть. Если у нас есть макрос, называемый, скажем, FOO, тогда везде, где мы хотим развернуть этот макрос в некоторых настройках проекта или других, мы можем просто использовать $(FOO). В состав IDE также входит куча макросов:

https://msdn.microsoft.com/en-us/library/c02as0cs.aspx

Итак, вы, я полагаю, захотите определить макросы для каталогов include и lib для каждой из ваших внешних библиотек, и вы можете использовать их для замены жестко закодированных путей, которые вы используете в настоящее время в ваш проект.

И это, я считаю, должно сортировать вас, потому что определения самих макросов хранятся в отдельном файле , внешнем по отношению к вашему файлу проекта, и разным пользователи / сборщики могут использовать разные файлы. IIRC, они имеют расширение .props.

Кроме того, вы можете определить макрос в терминах другого макроса или макроса, и это облегчает работу.

Итак, кто еще думает, что Microsoft не знает, как создать систему сборки? Visual Studio является фантастической частью программного обеспечения, как только вы привыкнете к ней, есть лишь немного кривая обучения.

2
ответ дан Paul Sanders 17 August 2018 в 13:41
поделиться

Путь к большому проекту - использовать диспетчер пакетов. Есть несколько хороших вариантов. Возможно, в окнах и визуальной студии вы можете использовать неуправляемые vcpkg или NuGet.

Если вы не можете использовать диспетчер пакетов по какой-то причине, следующая вещь должна состоять в том, чтобы зафиксировать все зависимости от репозитория GIT. Если вы ориентируетесь только на платформы Windows, такие как окна 8 или 10, и хотите поддерживать только VS2017, то компиляция зависимостей не является проблемой. Недостатком является то, что репо станет огромным.

Для крошечного школьного проекта последний вариант жизнеспособен.

2
ответ дан Mauricio Cele Lopez Belon 17 August 2018 в 13:41
поделиться
  • 1
    msys2 также является хорошим вариантом для окон. – bluedragon 13 July 2018 в 04:57
  • 2
    Добавление скомпилированных двоичных файлов в репозиторий не является вариантом. GIT предназначен для текстовых файлов, а не для двоичных файлов. – Ivan P. 13 July 2018 в 06:22
  • 3
    @Ivan Не стоит беспокоиться, что они удалили жестко закодированные «нет двоичных файлов». проверьте с последней версией. Морис совершенно прав. «Для крошечного школьного проекта последний вариант жизнеспособен». – Voo 13 July 2018 в 07:02
  • 4
    Как это поможет, если OP захочет найти свои сторонние библиотеки в разных местах на разных машинах? – Paul Sanders 13 July 2018 в 07:12
  • 5
    @Paul Это поможет, потому что ему не нужно? – Voo 14 July 2018 в 17:26
Другие вопросы по тегам:

Похожие вопросы: