[英]Cannot build C program from Windows batch script
我想使用Windows批處理腳本構建C程序,但是編譯器出現致命錯誤。
我有一台Windows 10計算機並使用Microsoft C / C ++編譯器。
我正在運行的批處理腳本稱為build.bat
,內容為:
SET PROJECT_COMPILER=cl
SET HOME_DIRECTORY=%~dp0
SET PROJECT_SRC=%HOME_DIRECTORY%src\
SET PROJECT_BIN=%HOME_DIRECTORY%bin\
SET PROJECT_INCLUDE=%HOME_DIRECTORY%include\
%PROJECT_COMPILER% "%PROJECT_SRC%*.c" /I"%PROJECT_INCLUDE%" /link
/out:"%PROJECT_BIN%out.exe"
del /f .\*.obj
從行%PROJECT_COMPILER% "%PROJECT_SRC%*.c" /I"%PROJECT_INCLUDE%" /link /out:"%PROJECT_BIN%out.exe"
是:
C:\Users\Andrea Nardi\Documents\C project\test_project>cl "C:\Users\Andrea Nardi\Documents\C project\test_project\src\*.c"
/I"C:\Users\Andrea Nardi\Documents\C project\test_project\include\" /link
/out:"C:\Users\Andrea Nardi\Documents\C project\test_project\bin\out.exe"
Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25507.1 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
cl : Command line warning D9024 : unrecognized source file type
'Nardi\Documents\C', object file assumed
cl : Command line warning D9024 : unrecognized source file type
'project\test_project\bin\out.exe', object file assumed
main.c
Microsoft (R) Incremental Linker Version 14.11.25507.1
Copyright (C) Microsoft Corporation. All rights reserved.
/out:main.exe
main.obj
Nardi\Documents\C
project\test_project\bin\out.exe
LINK : fatal error LNK1181: cannot open input file 'Nardi\Documents\C.obj'
似乎路徑C:\\Users\\Andrea Nardi\\Documents\\C project\\
中的空格引起了您的問題。
通常,在項目路徑中避免使用空格,這將是各種陷阱的原因,因為空格是命令行參數定界符。
使用相對路徑也要簡單得多,這樣您就可以從任何地方(而不是非常特定的文件夾)構建項目,並避免空格。 在這種情況下,類似:
SET PROJECT_COMPILER=cl
REM Set working directory to that of this batch file
pushd %~dp0
REM Set paths relative to batch file path
SET PROJECT_SRC=.\src
SET PROJECT_BIN=.\bin
SET PROJECT_INCLUDE=.\include
REM Build...
%PROJECT_COMPILER% "%PROJECT_SRC%\*.c" /I"%PROJECT_INCLUDE%" /link
/out:"%PROJECT_BIN%\out.exe"
REM Clean-up...
del /f .\*.obj
REM Restore original working directory
popd
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.