一位朋友和我正在使用Qt Creator和Boost構建遊戲引擎。到目前爲止,我們有這樣的想法,即引擎將成爲一個共享庫,我們可以用一個測試可執行文件運行它,這個可執行文件將變成我們最終想要製作的遊戲。構建共享庫,將頭文件更新到編譯器/系統目錄
問題主要是頭文件。我希望找到某種方式讓Qt Creator能夠在引擎的最新版本構建完成或即使添加時立即識別頭文件。起初,我在想Python中的一個腳本,在引擎生成後作爲Qt Creator中的構建步驟執行,只需將頭文件複製到系統目錄(例如/usr/include
- 如果在* nix系統上運行), IDE將在將引擎與測試可執行文件鏈接時識別頭文件,並且我們還將擁有完整的自動完成支持。
當然,會使用環境變量,雖然我更喜歡在Linux中開發,但我的朋友更喜歡Windows,所以我們同意關注我們各自平臺偏好的開發。
儘管這似乎是一個很好的解決方案,但我認爲這個Python腳本的想法可能已經過時了。有一個更好的方法嗎?
更新
從所建議的QMAKE劇本,我最終得到這個錯誤。
cp -f "/home/amsterdam/Programming/atlas/Engine/AtlasEngine/"AtlasEngine_global.h "/"
cp: cannot create regular file `/AtlasEngine_global.h': Permission denied
make: Leaving directory `/home/amsterdam/Programming/atlas/Engine/AtlasEngine__GCC__Linux__Debug'
make: *** [libAtlasEngine.so.1.0.0] Error 1
15:20:52: The process "/usr/bin/make" exited with code 2.
Error while building project AtlasEngine (target: Desktop)
When executing build step 'Make'
我調整如下所示:
# Copy over build artifacts
SRCDIR = $$ATLAS_PROJ_ROOT
DESTDIR = $$ATLAS_INCLUDE
# Look for header files there too
INCLUDEPATH += $$SRCDIR
# Dependencies: mylib. Only specify the libs you depend on.
# Leave out for building a shared library without dependencies.
#win32:LIBS += $$quote($$SRCDIR/mylib.dll)
# unix:LIBS += $$quote(-L$$SRCDIR) -lmylib
DDIR = \"$$SRCDIR/\" #<--DEFAULTS
SDIR = \"$$IN_PWD/\"
# Replace slashes in paths with backslashes for Windows
win32:file ~= s,/,\\,g
win32:DDIR ~= s,/,\\,g
win32:SDIR ~= s,/,\\,g
for(file, HEADERS) {
QMAKE_POST_LINK += $$QMAKE_COPY $$quote($${SDIR}$${file}) $$quote($$DDIR) $$escape_expand(\\n\\t)
}
哇,謝謝!我會盡快進行測試。 – zeboidlund
好吧,測試它,但它不工作。我用我所做的更改更新了我的帖子。你知道爲什麼會出現這種情況嗎? – zeboidlund
@aboutblank出於某種原因,它正在複製到系統中的''/'',以便它無權寫入(沒有意外)。你確定你在項目文件的其他地方指定了正確的'$$ ATLAS_INCLUDE'路徑嗎?在for循環中''DDIR''似乎是''/''在你的情況。 – gertvdijk