我正在尝试使用cmake构建libpng。为此,zlib包含目录和zlib库的变量传递给cmake。像这样:
cmake .. -DZLIB_LIBRARY=../../zlib-1.2.8/build/$(Configuration)/zlib.lib -DZLIB_INCLUDE_DIR=../../zlib-1.2.8/
在发布版本中非常有效 - 但在调试版本中却不行。它几乎正常工作 - 我在路径中使用$(配置)将在MS VS中使用" Debug"或"发布"取决于配置。但问题是,zlib在Debug& amp;中使用了不同的文件名。发布模式。像:
zlib.lib zlib.dll(发布)
zlibd.lib zlibd.dll(调试)
如果我使用上述命令,它将搜索库:
../../ zlib-1.2.8 / build / Release / zlib.lib(发布 - >有效)
../../ zlib-1.2.8 / build / Debug / zlib.lib(Debug - >不起作用,因为文件名是zlibd.lib)
如何根据cmake的配置完成不同的库名称的任何想法(我不想在生成的VS Project中更改它)?
答案 0 :(得分:3)
使用optimized
和debug
这样的指令
SET(LIBZ_LIB optimized ${PROJECT_SOURCE_DIR}/zlib.lib
debug ${PROJECT_SOURCE_DIR}/zlibd.lib)
target_link_libraries(your-app ... ${LIBZ_LIB}
当然,您必须修复库文件的路径。