CMake target_link_libraries сокращает абсолютный путь до относительного пути в проекте Visual Studio - PullRequest
0 голосов
/ 05 июня 2019

У меня есть проект со следующим макетом:

.
|_include
| |_GLFW
|   |_glfw3.h
|_lib
| |_glfw3.lib
|_src
| |_main.cpp
|_build
|_CMakeLists.txt

CMakeLists.txt выглядит следующим образом:

cmake_minimum_required( VERSION 3.14 )

project( example LANGUAGES CXX )

set( INCLUDE_HEADERS
   include/GLFW/glfw3.h
)

set( SRC
    src/main.cpp
)

source_group( include FILES ${INCLUDE_HEADERS} )
source_group( src FILES ${SRC} )

add_executable( example ${INCLUDE_HEADERS} ${SRC} )

target_link_libraries( example "${CMAKE_BINARY_DIR}/lib/glfw3.lib" )

Я перехожу на ./build и набираю cmake ..

Это создает решение Visual Studio 2017, как и ожидалось.Но в проекте example он указывает путь зависимости glfw3.lib как lib\glfw3.lib и говорит, что не может его найти.

Насколько я понимаю, CMAKE_BINARY_DIR должен представлятьабсолютный путь к проекту, и это то, что я получу, если попытаюсь распечатать его, используя message.Почему он изменяет абсолютный путь на (ошибочный) относительный путь в решении Visual Studio?

Я также пытался использовать CMAKE_SOURCE_DIR, CMAKE_CURRENT_BINARY_DIR и CMAKE_CURRENT_SOURCE_DIR, и все они изменяют абсолютныйпуть к относительному пути.

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