Сначала я бы использовал FILE *fopen( const char *restrict filename, const char *restrict mode )
из C99 Standard.
Тогда в CMake я бы использовал install(FILES helloworld.txt DESTINATION ${CMAKE_INSTALL_BINDIR})
примечание: CMAKE_INSTALL_BINDIR
взято из GNUInstallDirs встроенный модуль.
Затем, используя скрипт bash / bat, вы всегда можете запустить программу из «BIN_DIR», поэтому путь к helloworld.txt будет «.»
например. add_executable(foo_prg ...)
... install(TARGETS foo_prg ...)
/ USR / бен / Foo
#!/usr/bin/env bash
cd /usr/bin && ./foo_prg
Таким образом, пользователь может запустить ./foo
, который будет "батутить" до /usr/bin
, чтобы запустить foo_prg
бинарный
Примечание: для тестирования без установки вы можете добавить в CMake:
file(COPY helloworld.txt DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
примечание: не работает для многоконфигурационной сборки, но должно быть легко вывести.
примечание 2: не знаю (то есть никогда не проверял), можем ли мы использовать вместо него $<TARGET_PROPERTY:foo_prg,RUNTIME_OUTPUT_DIRECTORY>
.