Я использовал Visual Studio 2017 для создания настольных проектов C ++ с использованием файлов .vcxproj. Мне нравится поведение по умолчанию, когда выходной каталог является подкаталогом ниже проекта. Например:
|-myproj.sln
|-myproj.vcxproj
|-----------------|--x64 --|-- myproj_release --|-- myproj.exe
Теперь я хочу определить сборку, используя CMake вместо .vcxproj, чтобы я мог выполнять сборку с помощью кода Visual Studio в качестве альтернативы Visual Studio 2017.
Я конвертировал свой .vcxproj в проект CMake, используя cmake-converter. Полученный CMakeLists.txt содержит:
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")
set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")
endif()
Когда я открываю этот CMakeLists.txt в Visual Studio 2017 и собираю его, он помещает исполняемый файл в подкаталог CMakeBuilds моего пользовательского каталога. Я думаю, это потому, что Visual Studio 2017 определяет CMAKE_BINARY_DIR.
Каков наилучший способ получения выходного каталога в исходном каталоге, как это происходит с моим файлом .vcxproj?