我试图使用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