ADD_CUSTOM_COMMANDを使用して、 vc2010プロジェクトにいくつかのカスタム ビルド コマンドを追加しようとしています。しかし:
[1] CMAKE が予想よりもはるかに多くのコードを自動的に挿入することがわかりました。
たとえば、コマンドを正確に次のようにします。
"c:\Some Folder\MyTool.exe" -arg0 -arg1
CMakeLists.txt の対応するコードは次のようになります。
add_custom_command( OUTPUT ${outfile}
COMMAND "c:\Some Folder\MyTool.exe" ARGS "-arg0 -arg1"
# COMMAND "\"c:\Some Folder\MyTool.exe\"" will FAIL to be parsed!
MAIN_DEPENDENCY ${infile}
VERBATIM)
しかし、実際に私は得ました:
setlocal
c:\Some Folder\MyTool.exe "-arg0 -arg1"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
これは私が望むものではありません。string: も試しましたCOMMAND "\"${MYTOOL_PATH}\" -arg0 -arg1"
が、文字列の前に引用符があるため、CMake は解析に失敗しました。c:\Some Folder\MyTool.exe
パスにスペースが含まれているため、コマンド文字列を引用できないのは残念です。
[2]また、CMake が依存関係のパスを自動的に展開することにも気付きました。
コマンドに を追加すると、DEPENS "$(PATH_MACRO)"
最終的に CMake によって自動的に展開された依存関係パスが取得されますC:\MySolutionDir\$(PATH_MACRO)
。しかし$(PATH_MACRO)
、ビジュアルスタジオが何を参照しているかを確実に理解できるようにするため、のみが必要です$(PATH_MACRO)
。
だからここに私の質問があります:
パスを自動展開したり、予期しないコードを挿入したりせずに、CMake が生の入力のみを受け入れるにはどうすればよいですか? 入力がビジュアル スタジオで有効であることを確認します。ありがとう!
PS。私の CMake バージョン: 2.8.10.2。VS版:ビジュアルスタジオ2010 Ultimate