迂回エクスプレスをコンパイルするための簡単なCMakeListsがあります
project(detours)
add_library(detours STATIC detours.cpp disasm.cpp image.cpp modules.cpp creatwth.cpp)
file(COPY detours.h detver.h DESTINATION ${CMAKE_BINARY_DIR}/include)
必要なフラグは上位レベルの CMakeLists で設定されます
add_definitions(-DDETOURS_X86 -DDETOURS_32BIT)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FS")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /FS")
それでも、デバッグビルドをコンパイルしようとすると、detours.cpp
スロー後に各 .cpp ファイルがビルドされます
失敗: C:\PROGRA~2\MICROS~1.0\VC\bin\cl.exe /nologo /TP -DDETOURS_32BIT -DDETOURS_X86 -Iinclude /DWIN32 /D_WINDOWS /W3 /GR /EHsc /FS /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Foext\detours_express_3.0\src\CMakeFiles\detours.dir\modules.cpp.obj \Fdext\detours_express_3.0\src\CMakeFiles\detours.dir\ /FS -c ..\ext\ detours_express_3.0\src\modules.cpp ..\ext\detours_express_3.0\src\modules.cpp : 致命的なエラー C1041: プログラム データベース 'z:\repo\src\ext\detours_express_3.0\src\cmakefiles\ を開けませんdetours.dir\vc120.pdb'; 複数の CL.EXE が同じ .PDB ファイルに書き込む場合は、/FS を使用してください
再実行するninja detours
と、次の 3 つの cpp ファイル、次の 2 つ、最後の cpp ファイルで同じことが起こり、プロジェクトは完全にコンパイルされます。
ninja -j1 detours
並列ビルドを無効にしただけなので、実行しても問題はありません。
/FS オプションを無視しているように見えるのはなぜですか? Visual Studio 2013 を使用しています。
更新 1
これは、ゲストが追加された Virtualbox 4.3.10 の VM 内にあります。Z:\ は、私がマウントした共有フォルダーです。VM とホストで Windows Defender を必ず無効にし、ホストでサードパーティの AV をアンインストールしました。
更新 2
/FS
症状を回避する回避策を見つけて回答として追加しましたが、実際にロックを同期していない理由はまだ説明されていません。