Поскольку мой комментарий действительно предоставил ответ, я отправлю его.
Как насчет того, чтобы скрыть косую черту в другую косую черту, подобную //
. Это работает для меня, когда я выполняю эту команду, где я избежал параметра /r
: start C:/folder/beep 2000 250 100 //r 3
Источник: http://oldwiki.mingw.org/index.php/switches%20with % 20forward% 20slashes
Minimalist GNU для Windows
Передача переключателей с косой чертой в MSYS
В MSYS аргумент командной строки «/ c» интерпретируется как диск C: поэтому, чтобы передать любой аргумент, начинающийся с косой черты, вам нужно использовать две косые черты. Например, чтобы использовать эту команду в MSYS:
cmd /c echo foo
Использование:
cmd //c echo foo
Если вам нужно есть стиль окна пути в сценарии оболочки, вы можете сделать
x=$(cd /unix/path && cmd //c cd)
Теперь x var содержит эквивалентный путь к / unix / path
blockquote>
После захода в список рассылки cmake-developer
и, наконец, оставив сообщение о проблемах cmake gitlab , я понял, что проблема была не столько в моей версии cmake, сколько в моей cmake_minimum_required
, которую я унаследовал от старый проект.
Я устанавливал:
cmake_minium_required(VERSION 2.8)
После обновления до 3.12, я получил правильное поведение:
/path/to/g++ -rdynamic CMakeFiles/test.dir/test.cpp.o -o test -lboost_program_options-mt
Чтение cmake_minimum_required документов, которые я понял " команда неявно вызывает "cmake_policy
. Я думаю, что последний не очень хорошо играл с FindBoost
из моего 3.12 `cmake.
Я не уверен, полезен ли этот пост для SO, но я определенно усвоил здесь урок по cmake.
Я не знаю, какую версию CMake вы используете, но вы пытались использовать Boost импортированную цель вместо устаревшей переменной CMake:
т.е. заменить: target_link_libraries(test LINK_PUBLIC ${Boost_PROGRAM_OPTIONS_LIBRARY})
на target_link_libraries(test LINK_PUBLIC Boost::program_options)