CMake target_link_libraries缩短了Visual Studio项目中相对路径的绝对路径

时间:2019-06-05 10:27:15

标签: visual-studio cmake

我有一个具有以下布局的项目:

.
|_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_DIRCMAKE_CURRENT_BINARY_DIRCMAKE_CURRENT_SOURCE_DIR,它们全部将绝对路径更改为相对路径。

0 个答案:

没有答案