How to remove the absolute path appended to targets' name when open CMake projects with Visual Studio?

51 Views Asked by At

I setup a CMake project, but when I open its folders with Visual Studio (not VSCode), Visual Studio added an absolute path to every target's name. How to remove them?

enter image description here

Part of the main CMakeLists.txt:

cmake_minimum_required(VERSION 3.24)
project(ZwHLR)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED 20)

add_compile_definitions(PROJECT_DIR="${CMAKE_SOURCE_DIR}")

if (MSVC AND (MSVC_VERSION GREATER_EQUAL 1914))
    add_compile_options("/Zc:__cplusplus")
endif()

set(THIRD_PARTY_DIR "${CMAKE_SOURCE_DIR}/ref")
set(THIRD_PARTY_EXTRA_DIR "${THIRD_PARTY_DIR}/extras")

# Windows Kits
set(CMAKE_WINDOWS_KITS_10_DIR "C:/Program Files (x86)/Windows Kits/10")
set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10)
set(VCPKG_ENV_PASSTHROUGH "CMAKE_WINDOWS_KITS_10_DIR,CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION")

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
  string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG})
  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG})
  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG})
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)

add_subdirectory(tools)

and tools/CMakeLists.txt

add_executable(test_runner)
target_include_directories(
    test_runner PUBLIC
    ${ACIS_INCLUDE_DIR}
    ${CMAKE_CURRENT_LIST_DIR}/test_runner
    ${CMAKE_CURRENT_LIST_DIR}/phl_example
)
target_sources(
    test_runner PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}/test_runner/main.cpp
)
target_link_libraries(
    test_runner PRIVATE
    CLI11 rapidjson ${HLR_LIBS} phl_example_object
)
target_link_directories(test_runner PUBLIC ${ACIS_LIBRARY_DIR})
set_target_properties(test_runner PROPERTIES VS_DEBUGGER_ENVIRONMENT "PATH=${ACIS_BINARY_DIR};$ENV{PATH}")
0

There are 0 best solutions below