CMake не добавляет оптимизированные и отладочные библиотеки правильно в проект VS - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот код в CMake, чтобы найти библиотеки отладки и выпуска для проекта, который у меня есть:

FIND_LIBRARY(MP4V2_LIBRARY_RELEASE libmp4v2 HINTS "${MP4V2_DIR}/bin/Windows-x64/Release Static (MT)")
FIND_LIBRARY(MP4V2_LIBRARY_BEDUG libmp4v2 HINTS "${MP4V2_DIR}/bin/Windows-x64/Debug Static (MTd)")
set(MP4V2_LIBRARIES "optimized ${MP4V2_LIBRARY_RELEASE} debug  ${MP4V2_LIBRARY_BEDUG}") 
message(STATUS ${MP4V2_LIBRARIES})

, и он правильно раскрывается при запуске CMake:

optimized D:/MyData/SourceCode/camm_mp4v2/bin/Windows-x64/Release Static (MT)/libmp4v2.lib debug  D:/MyData/SourceCode/camm_mp4v2/bin/Windows-x64/Debug Static (MTd)/libmp4v2.lib

и я добавил его в свое приложение так:

target_link_libraries(MyApp ${MP4V2_LIBRARIES})

Когда я создаю проект для VS и пытаюсь скомпилировать его, я получаю эту ошибку:

cannot open file 'optimized D:\MyData\SourceCode\camm_mp4v2\bin\Windows-x64\Release Static (MT)\libmp4v2.lib debug  D:\MyData\SourceCode\camm_mp4v2\bin\Windows-x64\Debug Static (MTd)\libmp4v2.lib.lib'

По-видимому, оптимизирован и библиотека отладки не была обнаружена CMake.

Что не так с этим кодом и как я могу это исправить?

1 Ответ

1 голос
/ 16 апреля 2020

Вместо этого создайте цель IMPORTED:

add_library(mp4v2 STATIC IMPORTED)
set_target_properties(mp4v2 PROPERTIES
    IMPORTED_LOCATION_DEBUG ${MP4V2_LIBRARY_DEBUG}
    IMPORTED_LOCATION_RELEASE ${MP4V2_LIBRARY_RELEASE})
target_link_libraries(MyApp mp4v2)

Если есть какие-либо заголовки, вы также можете установить свойство INTERFACE_INCLUDE_DIRECTORIES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...