У меня есть проект со следующим макетом:
.
|_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
, и все они изменяют абсолютныйпуть к относительному пути.