2014-12-27 117 views
0

我在Code :: Blocks中有一個項目,它使用了一個動態庫,並且將來會使用更多。我已經正確設置了該項目以使用該庫,並且它編譯並運行得非常好。在具有依賴關係的Code :: Blocks中編譯

但是,我想知道是否有一種方法來編譯exe文件的發行版本 dll所需的文件夾旁邊。 (我不想讓他們每一個都追捕並複製/粘貼。) 我覺得我錯過了某些東西,或者錯誤地去了解它。

有無論如何有Code :: Blocks做到這一點或更好的方式獲得一個易於分發zipfile /項目?

如何使用makefile(最好是cmake,但任何與Windows兼容的類型都很好)來實現這一點?

+0

不知道CodeBlocks是否提供了一些用於插入腳本的「鉤子」,但是makefile文件呢? – deviantfan

+0

坦率地說,我對makefiles不是很瞭解 - 除了使用「CMake教程」搜索外,我真的不知道從哪裏開始! (我之前使用過CMake,並且已經將它安裝在我的計算機上。) – Numeri

+0

請注意,不能比較'make'和'CMake':第一種是調用所需食譜來構建某些東西的工具(並且僅在需要時纔會調用) ,而後者可以被看作是「makefile generator」:除了所需的makefile/project文件外,它實際上並沒有構建任何東西。 – kebs

回答

1

CodeBlocks提供了執行構建之前或之後構建的功能。簽出菜單「Project-> Build options」,並在「Pre/Post構建步驟」標籤下,你可以插入任何你想要的shell命令。例如:

enter image description here

當打F9,您將看到:

-------------- Build: Release in aaa (compiler: GNU GCC Compiler)--------------- 
Target is up to date. 
Running target post-build steps 
echo "Hi" 
Hi 
Process terminated with status 0 (0 minutes, 0 seconds) 
0 errors, 0 warnings (0 minutes, 0 seconds) 

所以,你可以在這裏添加要收集您文件放在一起的任何命令,例如像(,使用7- ZIP):

7z a my_archive.zip myfile1.exe myfile2.dll readme.txt 

被告知,這將被執行在每一個建設這是不是你可能希望:在編譯程序中的小改動時,您不想等待存檔程序。所以也許只能在特殊的構建目標中進行。

+0

非常感謝!我希望有一種方法可以包含所有需要的dll文件,因爲(我相信)需要比我必須放置在項目文件夾中更多的dll文件。當我將整個項目文件夾複製到另一個地方並嘗試運行release exe時,它會失敗。它說我錯過了一個DLL,但是當我粘貼和其他相關的DLL時,它抱怨我缺少libgcc_s_sjjj-1.dll。也許我最初問錯了問題,但我該如何解決這個問題?如果我必須使用IDE來運行它,那麼exe是無用的。謝謝! – Numeri

+0

好吧,如果我明白了,問題的第二部分是「我如何獲得我的應用程序請求的所有dll的列表?」 ?。我認爲[這個答案](http://stackoverflow.com/a/475156/193789)將回答這個問題。讓我們知道。 – kebs

+0

謝謝!因此,如果我要在我的可執行文件上運行depends.exe,那麼我只需跟蹤這些dll文件並將其與我的可執行文件粘貼到文件夾中,之後我可以將其作爲zip文件分發給它? – Numeri