cmake в Windows: получите команду ctest для выполнения команды вместо запуска exe - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть ctest, который запускает пользовательскую команду вместо запуска исполняемого файла.В Linux ctest успешно запускает команду, но в Windows ctest интерпретирует команду как исполняемый файл и пытается найти ее (конечно, безуспешно)

Это мой CMakeLists.txt:

if(UNIX)
  add_test(NAME testName COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/script.pl ${PROJECT_BINARY_DIR}/bin/testName)
elseif(WIN32)
  add_test(NAME testName COMMAND "cmd.exe @cmd /k \"perl ${CMAKE_CURRENT_SOURCE_DIR}\\script.pl ${PROJECT_BINARY_DIR}\\bin\\Debug\\testName.exe\"")
endif(UNIX)

В Linux команда выполнена правильно.Но в Windows это то, что я получаю:

    test 1
          Start 1: testName 
    Could not find executable cmd.exe @cmd /k "perl C:/PATH/script.pl C:/PATH/bin/Debug/testName.exe"
    Looked in the following places:
    cmd.exe @cmd /k "perl C:/PATH/script.pl C:/PATH/bin/Debug/testName.exe 
.
.
.etc

Как я могу заставить cmake в Windows фактически запускать команду вместо того, чтобы рассматривать ее как исполняемый файл?Сначала я попробовал это без (cmd.exe @cmd / k), это действительно не имеет значения, если оно интерпретируется как имя exe, а не как команда cmd.

Спасибо.

1 Ответ

0 голосов
/ 13 ноября 2018

Я обнаружил, что я делаю неправильно, избавился от двойных кавычек, и это сработало.

if(UNIX)
  add_test(NAME testName COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/script.pl ${PROJECT_BINARY_DIR}/bin/testName)
elseif(WIN32)
  add_test(NAME testName COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}\\script.pl ${PROJECT_BINARY_DIR}\\bin\\Debug\\testName.exe)
endif(UNIX)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...