Именование исполняемых файлов в cmake - PullRequest
2 голосов
/ 03 июля 2019

Я работаю над проектом и решил портировать его на CMake. В то время как я настраивал, я использовал сборку имени сборки заполнителя; проблем не возникало. Но после того, как я сменил имя на S&W, CMake не позволил мне собрать. Выдается сообщение об ошибке:

[cmake] CMake Error at CMakeLists.txt:28 (add_executable):
[cmake]   The target name "S&W" is reserved or not valid for certain CMake features,
[cmake]   such as generator expressions, and may result in undefined behavior.

Я почти уверен, что имя S&W не зарезервировано CMake.

Так почему это происходит? Могу ли я сделать что-нибудь, чтобы исправить эту ошибку?

cmake_minimum_required(VERSION 3.14)
project(S&W)

include_directories("source")
include_directories("dependencies/include")

file(GLOB_RECURSE SRC "source/*.cpp")
LINK_DIRECTORIES("dependencies/lib/x86")

if ( MINGW )
set(CMAKE_EXE_LINKER_FLAGS  "-static-libgcc -static-libstdc++")
LINK_LIBRARIES("mingw32")
endif ( MINGW )

LINK_LIBRARIES("libSDL2main.a")
LINK_LIBRARIES("libSDL2.dll.a")
LINK_LIBRARIES("libSDL2_mixer.dll.a")

add_executable(${PROJECT_NAME} ${SRC}) 

Ответы [ 2 ]

1 голос
/ 03 июля 2019

У вас есть запрещенный символ в названии цели, а именно &.

Ознакомьтесь с документацией о именах целей cmake , в частности, об этом пункте:

Target names may contain upper and lower case letters, numbers, the underscore
character (_), dot(.), plus(+) and minus(-). As a special case, ALIAS targets
and IMPORTED targets may contain two consequtive colons.
1 голос
/ 03 июля 2019

Ошибка говорит о том, что вы не можете объявить target , который содержит некоторые специальные символы (& в вашем случае).

Однако это не означает, что вы не можете сгенерировать файл с указанным именем.Просто создайте «обычную» исполняемую цель, но присвойте ей свойство OUTPUT_NAME :

add_executable(SW ${SRC})
set_target_properties(SW PROPERTIES OUTPUT_NAME "S&W")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...