2017-10-05 1 views
1

Ich habe eine alte MFC-Lösung mit 120 Projekten drin. Jetzt versuchen Im es mit VisualC 2017 zu kompilieren, aber jedes Projekt gibt den Fehler:programmgesteuert ändern Projekteinstellungen

cannot open file mfc140d.lib

Eröffnung Projekteigenschaften, 141 die Plattform Toolset VS2017 ändern und die die Sprachversion zu C++ es 17 Behebungen. Aber es wird eine laaaaange Zeit dauern, dies für 120 Projekte zu tun und dann dasselbe für den Release Build. Welches sind die Einstellungen in den Projektdateien, die ich programmatisch ändern kann, um diese beiden Optionen festzulegen? Ich kann sie nicht finden

+2

Sie müssen nur 120 Mal klicken, wenn Sie "Alle Konfigurationen" auswählen, anstatt es separat für "Release" und "Debug" zu tun. Andernfalls ändern Sie die Änderungen für ein Projekt, schauen Sie nach, was sich in der .vcxproj-Datei geändert hat, und führen Sie dann eine Suche/Ersetzung mit Ihrem bevorzugten Texteditor durch. –

+0

das Wichtigste hier war, dass ich annahm, es war die .vcproj-Datei und nicht die .vcxproj-Datei, verdammt – Laurijssen

+0

Verwenden Sie [Eigenschaftenseiten] (https://docs.microsoft.com/de-de/cpp/ide/working- with-project-properties # Eigenschaften-Seiten). Wechseln Sie alternativ zu einem programmierbaren Build-System wie CMake. Jeder hasst es (und das schließt mich mit ein), aber es gibt keine Alternative, um komplexe Build-Systeme zu verwalten. Oder Stratustrup leicht paraphrasierend: Es gibt nur zwei Typen von Build-Systemen: Jene, über die sich alle beschweren, und solche, die niemand benutzt. – IInspectable

Antwort

0

Schrieb ein Python-Skript, das stdcpp17 und v141 zur vcxproj-Datei hinzufügt, wenn nicht vorhanden. Vielleicht findet jemand einen Nutzen dafür:

def get_all_files(basedir): 
    for root, subfolders, files in os.walk(basedir): 
     for file in os.listdir(root): 
      yield root, file 

def all_lines_from_file(file): 
    with open(file, 'r') as fd: 
     for line in fd.readlines(): 
      yield line 

def update_VCXPROJ(): 
    standard = '<LanguageStandard>stdcpp17</LanguageStandard>' 
    toolset = '<PlatformToolset>v141</PlatformToolset>' 
    add1 = '<CharacterSet>MultiByte</CharacterSet>' 
    add2 = '<DebugInformationFormat>' 

    for root, file in get_all_files('c:/projects/6thcycle/sources/'): 
     if not file.lower().endswith('.vcxproj'): 
      continue 

     thisfile = '' 
     for line in all_lines_from_file('{0}/{1}'.format(root, file)): 
      if toolset in line or standard in line: 
       continue 

      if add1 in line: 
       line += ' {0}\n'.format(toolset) 
      elif add2 in line: 
       line += '  {0}\n'.format(standard) 

      thisfile += line 

     with open('{0}/{1}'.format(root, file), 'w') as fd: 
      fd.write(thisfile)  

update_VCXPROJ()