Как настроить CMake так, чтобы сгенерированный проект Visual Studio находил исполняемый файл? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь настроить проект с CMake в Visual Studio 2017 для Windows.CMakeLists.txt довольно прост.Я просто добавляю исполняемый файл с исходными файлами и задаю язык компоновщика для C ++.

Затем я запускаю cmake в своей папке build_64 и получаю сгенерированное решение VS, содержащее ALL_BUILD, ZERO_CHECK и мой реальный проект, конечно.Я установил его в качестве моего стартового проекта и попытался запустить его, но затем я получил следующее сообщение об ошибке:

Невозможно запустить программу 'C: \ Users ... \ Documents \ MyProject \ build_64 \ Debug\ Project1.exe.Системе не удается найти указанный файл.

CMakeLists.txt:

cmake_minimum_required(VERSION 3.2)
project(MyProject)

# create Project1
set(PROJECT1_SOURCES ${CMAKE_SOURCE_DIR}/Project1/src/)
add_executable(Project1 ${PROJECT1_SOURCES})
set_target_properties(Project1 PROPERTIES LINKER_LANGUAGE CXX)

команда cmake:

cmake .. -G "Visual Studio 15 2017 Win64"

Почему Visual Studio не может найтимой исполняемый файл?И как я могу настроить его так, чтобы Visual Studio его нашел?

Вот моя структура папок:

MyProject
   - build_64
       - ALL_BUILD.vcxproj
       ...
       - MyProject.sln
       - Project1.vcxproj
       - ZERO_CHECK.vcxproj
    - Project1
       - src
CMakeLists.txt
CMakeSettings.json

1 Ответ

0 голосов
/ 29 марта 2019

Cmake не генерирует исполняемый файл - cmake создает систему сборки для вас.Затем вам нужно построить свой проект в VS или внутри командной строки.Если вам нужно обратиться к какому-нибудь исполняемому файлу, а затем вызвать его, вот фрагмент для вас:

find_program(THRIFT_COMPILER NAMES thrift thrift.exe HINTS ${THRIFT_COMPILER_ROOT} ${THRIFT_ROOT}/compiler/cpp/bin ${THRIFT_ROOT}/bin ${THRIFT_ROOT}/bin/Release /usr/local /opt/local PATH_SUFFIXES bin bin64)

   exec_program(${THRIFT_COMPILER}
                  ARGS -version 
                  OUTPUT_VARIABLE __thrift_OUT 
                  RETURN_VALUE THRIFT_RETURN)
   message( STATUS "Thrift compiler version: ${__thrift_OUT}" )
...