Tôi đã trải qua một số bài viết về Stack Overflow đã trả lời câu hỏi "Làm thế nào để chuyển các định nghĩa tiền xử lý tới trình biên dịch từ dòng lệnh MSBuild ", và tất cả họ đều trả lời với một số biến thể của:MSBuild.exe không chấp nhận một trong hai/p: DefineConstants và/p: PreprocessorDefinitions
MSBuild.exe /p:DefineConstants=THING_TO_BE_DEFINED
tôi đã thử mọi biến thể mà tôi có thể đưa ra:
MSBuild.exe "/p:DefineConstants=THING_TO_BE_DEFINED"
MSBuild.exe /p:DefineConstants="THING_TO_BE_DEFINED"
MSBuild.exe "/p:DefineConstants=THING_TO_BE_DEFINED=1"
MSBuild.exe /p:DefineConstants="THING_TO_BE_DEFINED=1"
... và hàng chục người khác. Tôi cũng đã tán tỉnh với PreprocessorDefinitions ghi đè theo những cách tương tự. Tất cả chúng đã kích hoạt #error bên dưới:
#include "stdafx.h"
#if !defined(THING_TO_BE_DEFINED)
#error "THING_TO_BE_DEFINED is not defined"
#endif
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
Tôi đã thử điều này bằng ứng dụng dòng lệnh đơn giản ở trên, cũng như với một dự án trò chơi lớn mà tôi có ở đây. Tôi chỉ có thể đoán rằng Visual Studio (tôi thấy điều này với 2005 và 2008) có một số thiết lập mặc định sâu trong ruột của nó đang ngăn cản đối số dòng lệnh của tôi không được áp dụng, nhưng tôi đã không tìm thấy bằng chứng để hỗ trợ giả thuyết này.
Bất kỳ ý tưởng nào về cách tôi có thể làm việc này? Tại sao trong tên của FSM họ không dính với tốt ol '-D THING_TO_BE_DEFINED?
Tôi bị mắc kẹt với .vcproj mà nhà phát triển đưa cho tôi. Doh. – Sniggerfardimungus