Как изменить имя исполняемого файла, который я устанавливаю с помощью CPack? - PullRequest
0 голосов
/ 02 февраля 2020

Я заранее прошу прощения, если это звучит как-то тривиально. Я новичок в использовании CMake и CPack.

В настоящее время я пытаюсь создать свой собственный компилятор как побочный проект, и я хочу проверить, как CPack установит мой проект.

Вот мой файл CMakeLists.txt, который у меня есть в root папки моего проекта:

cmake_minimum_required(VERSION 3.15)
project(Simple-C-Compiler VERSION 0.01)

set(CMAKE_CXX_STANDARD 20)

set(COMPILER_VERSION ${PROJECT_VERSION})

add_library(include INTERFACE)
target_include_directories(include INTERFACE include/)

add_subdirectory(lib)
add_subdirectory(phases)
add_subdirectory(compiler)
add_subdirectory(tests)

target_link_libraries(compiler lexer)
target_link_libraries(tester lexer)

add_compile_options(-Wall)

install(TARGETS compiler DESTINATION bin)
set(CPACK_PACKAGE_EXECUTABLES "compiler" "Simple-C")
include(CPack)

Когда я пытаюсь установить свой компилятор, выполнив:

mkdir build
cd build
cmake ../
make install

, я получаю следующий вывод:

[ 22%] Built target lib
[ 55%] Built target lexer
[ 77%] Built target compiler
[100%] Built target tester
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/compiler

CPack установил мой компилятор как «компилятор», а не «Simple- C». Я хочу, чтобы имя устанавливаемого исполняемого файла было "Simple- C". Как мне go сделать это в моем файле CMakeLists.txt?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Вы можете изменить имя цели с помощью следующей команды:

set_target_properties(compiler PROPERTIES OUTPUT_NAME Simple-C)

Это должно быть вызвано после add_subdirectory(compiler)

Как примечание, упомянутые вами команды сделали не вызывать cpack. Чтобы вызвать cpack, вам нужно выполнить команду cpack .

1 голос
/ 02 февраля 2020

Вы можете использовать опцию RENAME CMake install. См https://cmake.org/cmake/help/v3.13/command/install.html

Короче

install(TARGETS compiler DESTINATION bin RENAME Simple-C)
...