Я пытаюсь создать libpng с помощью cmake. Для этого переменная для каталога 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, либо «Debug», либо «Release» в зависимости от конфигурации. Но проблема mt в том, что zlib использует разные имена файлов в Debug & Режим выпуска. Как:
zlib.lib zlib.dll (Release)
zlibd.lib zlibd.dll (Debug)
Если я использую команду выше, он будет искать библиотеки:
../../zlib-1.2.8/build/Release/zlib.lib (Release -> работает)
../../zlib-1.2.8/build/Debug/zlib.lib (Debug -> не работает, поскольку имя файла - zlibd.lib)
Любые идеи о том, как я могу выполнять разные имена библиотек в зависимости от конфигурации с помощью cmake (я не хочу менять его в сгенерированном проекте VS)?
И здесь я собирался предложить генераторные выражения, но посмотрите, CMake умнее этого. более подробную информацию можно найти здесь: http://www.cmake.org/cmake/help/v3.0/command/target_link_libraries.html – IdeaHat
@IdeaHat Это тоже работает, но я считаю, что это чище :) – ismail