2017-10-05 5 views
1

120個のプロジェクトを含む古いMFCソリューションがあります。 は今、イムはVisualC 2017でコンパイルしようとしているが、すべてのプロジェクトは、エラー発する:はプログラムでプロジェクト設定を変更します

cannot open file mfc140d.lib

オープニングプロジェクトのプロパティを、C++ 17点の修正にそれをVS2017 141のプラットフォームツールセットと言語バージョンを変更します。 しかし、それは120のプロジェクトでこれを行うのには時間がかかりますし、リリースビルドでも同じことをします。これらの2つのオプションを設定するためにプログラムで変更できるプロジェクトファイルの設定はどれですか?私は確かにそれらを見つけることができません

+2

「リリース」と「デバッグ」を別々に行うのではなく、「すべての構成」を選択した場合、120回クリックするだけで済みます。それ以外の場合は、1つのプロジェクトのchangementを行い、.vcxprojファイルで何が変更されているかを見てから、お気に入りのテキストエディタで検索/置換します。 –

+0

ここで重要なのは、.vcprojファイルではなく、.vcxprojファイルであると仮定したことです。 – Laurijssen

+0

[プロパティページ](https://docs.microsoft.com/de-de/cpp/ide/working- with-project-properties#property-pages)。あるいは、CMakeのようなプログラム可能なビルドシステムに切り替えることもできます。誰もがそれを嫌う(それは私を含む)が、複雑なビルドシステムを管理するための代替手段はない。 Stroustrupにはわずか2種類のビルドシステムしかありません。誰もが苦情を申し立てるシステムと、誰も使用しないシステムです。 – IInspectable

答えて

0

stdcpp17とv141をvcxprojファイルに追加するpythonスクリプトを作成しました。

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() 
関連する問題