我試圖使用cmake來構建libpng。爲此,zlib的一個變量include目錄和zlib庫被傳遞給cmake。像這樣:cmake - 用於發佈和調試的不同庫(zlib/libpng)
cmake .. -DZLIB_LIBRARY=../../zlib-1.2.8/build/$(Configuration)/zlib.lib -DZLIB_INCLUDE_DIR=../../zlib-1.2.8/
它在發佈版本中完美工作 - 但不在調試版本中。它幾乎可以工作 - 我將在MS VS中使用的$(Configuration)路徑中使用$(Configuration),這取決於配置,可以是「Debug」或「Release」。但問題是,zlib在調試&發佈模式中使用不同的文件名。像:
zlib.lib ZLIB.DLL(釋放)
zlibd.lib zlibd.dll(調試)
如果我使用上面的命令,它會搜索庫:
../../zlib-1.2.8/build/Release/zlib.lib(發佈 - >作品)
../../zlib-1.2.8/build/Debug/zlib.lib (調試 - >不工作,因爲文件名是zlibd.lib)
任何想法如何我可以完成不同的庫名取決於cmake的配置(我不想在生成的VS項目中更改它)?
在這裏我要提出發生器表達式,但看看,CMake比這更聰明。更多的信息可以在這裏找到:http://www.cmake.org/cmake/help/v3.0/command/target_link_libraries.html – IdeaHat 2014-12-03 14:30:50
@IdeaHat這也適用,但我覺得這是更乾淨:) – ismail 2014-12-03 15:25:57