web-dev-qa-db-fra.com

Qu'est-ce que le drapeau -Ot représente dans Visual Studio 2017?

Je reçois l'erreur Erreur C1007 Indicateur non reconnu '-Ot' dans 'p2' mais incapable de trouver -Ot dans la chaîne de ligne de commande du projet. Googling n'a pas aidé. Quelqu'un sait ce que ce drapeau représente?

3
Swtsvn

Vous devriez trouver cet indicateur dans la page Optimization property de votre projet.

L'option -Ot (/ Ot) est Code rapide de faveur flag (Tentatives d'amélioration du temps d'exécution dans le temps)

Selon la documentation Microsoft Visual C++ ( https://docs.Microsoft.com/en-us/cpp/build/reference/os-ot-favor-small-code-favor-fast-code ),

Si vous utilisez/Os ou/Ot, vous devez également spécifier/Og pour optimiser le code .

3
combomatrix

J'ai eu un problème similaire sur un projet que je compilais. Cela semble être causé lorsque l'éditeur de liens MSVC 2017 essaie de lier une bibliothèque de dépendances ".lib" à votre projet et qu'il a été compilé avec indicateur d'optimisation\Ot activé. C'est pourquoi vous ne pouvez pas le voir en ligne de commande de votre propre projet. Vous pouvez essayer l'une de ces actions.

1) Recompilez vos bibliothèques sans que\Ot ne soit activé (Propriétés-> C/C++ -> Optimisation-> Taille préférée ou vitesse -> Ni l'un ni l'autre), puis recompilez l'ensemble du projet.

2) Mettre à jour la chaîne d’outils MSVC 2017 à la dernière, qui devrait être 14.14.26428. Après la mise à jour, recompilez votre projet. C’est étrange, mais dans la configuration de ma machine, la chaîne d’outils 14.13 ne pouvait pas lier les bibliothèques compilées avec les nouvelles chaînes d’outils et\Ot activé.

Les deux solutions ont fonctionné dans mon cas, mais j'ai fini par utiliser le numéro 2.

3
txicos

M'est arrivé en construisant nmap. Les exécutables n’avaient pas/GL, contrairement à libnetutil. Supprimer/GL de libnetutil l'a corrigé. Ou, si possible (et souhaité), alignez/GL sur toutes les cibles dépendantes (lib, dll/exe).

0
Cristian Amarie