2014-02-27 68 views
1

我最近發現Emscripten,並且下載後,我決定去看看,如果我能得到它的使用Code :: Blocks的工作,這樣我就可以輕鬆地測試我的應用程序,看看他們是如何在以JavaScript運行時執行。配置啓動命令

我創建了一個新的編譯器的配置,並設置了所有的工具鏈的可執行文件,除了資源編譯器(這似乎並沒有給我任何問題),以及調試程序。我不確定要在調試器中放什麼,因爲我記得調試器字段是一個文本框。但是當我看時,所有那裏都有一個下拉菜單。

我設法找到在「設置」菜單中「調試」菜單,當我打開一看,有一個叫做「創建配置」按鈕。

Code::Blocks Debugger menu

我創建了一個新的配置,並指出 「node.exe」(運行.js文件)的可執行文件的路徑。然後我回到了編譯器設置,並在下拉菜單中選擇了我的新調試器。

然後我嘗試構建並運行一個簡單的Hello World應用程序。但是一旦它完成構建,它給了我信息Execution of '[my file] ' in '[my project folder] 'failed.實際的構建似乎是成功的,所以我決定從命令行手動運行node.exe來查看我是否已經錯誤地配置了調試器。正如我所料,它成功運行。

雖然我很高興,我已經成功地配置,編譯器,我仍然感到困惑,爲什麼應用程序不想運行。我還設置Emscripten來創建HTML文件,以查看Code :: Blocks是否會以某種方式識別相應的程序,然後在Web瀏覽器中打開它。當然,這也不起作用。

什麼,我想弄清楚,我是怎麼配置代碼:: Blocks的運行命令。也許調試器甚至不是正確的地方。但我真的需要有人來幫助我弄清楚如何在Code :: Blocks中配置它,因爲這是目前唯一真正給我帶來麻煩的東西。

謝謝。

回答

3

可能的,但不太理想的解決方案:

過了一段時間,我能想出一個解決方案。不過,我相信有更好的選擇。

要使用此方法:

  1. 創建一個名爲RunScript一個新的創建目標。
  2. 將編譯器沒有編譯器
  3. 在項目屬性中,將類型設置爲控制檯應用程序
  4. 取消選中自動生成文件擴展名,並將輸出文件名設置爲RunButton.bat
  5. 創建一個名爲RunButton.bat的新文件(或者您輸入的任何文件作爲輸出文件名)。
  6. 無論您在RunButton.bat中輸入的內容現在都會在您點擊運行按鈕時執行。
  7. 我還創建了一個新的virtual target,其中包含我的RunScript目標和我的主要目標,這樣我就不必在每次想測試我的應用程序時切換目標。

問題用這種方法:

此方法不工作,這是不理想的,因爲它需要你有兩個額外的目標(包括我爲了方便虛擬目標)。我寧願能夠將一切都包含在一個目標中。

稍微好一點的解決方案:

一個新的解決方案,我決定使用,是簡單地使用configure tools菜單創建工具,指向運行我編譯的程序的批處理文件。

要使用此方法:

  1. 轉到工具>配置工具...>添加
  2. 填寫名稱,並將該可執行文件指向要使用此工具時要運行的腳本。
  3. 填寫任何需要參數。您可以使用內置的${TARGET_OUTPUT_FILE}宏將輸出應用程序作爲參數傳遞。
  4. 您現在可以通過將工具> {我的工具}使用您的工具,但是你可以通過將設置>編輯器設置熱鍵...>鍵盤快捷鍵
  5. 點擊加號按鈕工具,然後點擊你的工具爲你設置一個快捷工具。
  6. 用這種方法

問題:

雖然這種方法的確消除了多餘的構建目標,它不會讓你運行你的腳本,或者通過點擊運行按鈕運行非可執行文件;這是最初的意圖。最重要的是,您需要隨時創建一個新工具來添加新腳本。


我希望別人能夠給我一個更好的方式來做到這一點,但現在這將工作。

2

可能有點晚,但我可以通過使用一些構建後步驟來獲取代碼塊運行按鈕以運行任何命令。我需要這個的原因是因爲我的筆記本電腦有nvidia「optimus」,爲了讓我的輸出程序看到謹慎的顯卡,我必須使用optirun前綴來運行它。因此,我增加了以下內容的編譯選項後生成步驟:

mv $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE)_bin 
echo #!/bin/sh > $(TARGET_OUTPUT_FILE) 
echo optirun $(TARGET_OUTPUT_FILE)_bin >> $(TARGET_OUTPUT_FILE) 
chmod +x $(TARGET_OUTPUT_FILE) 

它基本上是重命名輸出二進制中,並創建一個腳本替換原始輸出二進制名稱。按下運行按鈕時,將執行腳本而不是輸出。

在windows上,運行exe擴展文件作爲批處理腳本時可能會遇到問題,那麼如果在第一個方法中使用bat擴展名生成輸出文件,但編譯後重命名爲exe像這樣的後構建:

move $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).bat $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).exe 
echo [WHATEVER YOU NEED TO RUN] > $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).bat 
+0

似乎有點黑客,但我不再使用Windows或Code :: Blocks:D。儘管如此,我仍然投了贊成票。謝謝。 –