É possível definir um símbolo para compilação condicional configurando propriedades em um projeto Xcode?
Meu objetivo é criar um símbolo que esteja disponível para todos os arquivos, sem a necessidade de importar / incluir, para que um conjunto de classes comuns possa ter um comportamento especial em alguns projetos. Como o seguinte, mas com meus próprios símbolos.
#if TARGET_IPHONE_SIMULATOR
...
#endif
objective-c
xcode
c-preprocessor
Steph Thirion
fonte
fonte
Respostas:
Vá para as configurações de destino ou projeto, clique no ícone de engrenagem no canto inferior esquerdo e selecione "Adicionar configuração definida pelo usuário". O novo nome da configuração deve ser
GCC_PREPROCESSOR_DEFINITIONS
e você pode digitar suas definições no campo à direita.De acordo com os comentários de Steph, a sintaxe completa é:
Observe que você não precisa dos '=' s se quiser apenas # definir um símbolo, em vez de dar a ele um valor (para
#ifdef
instruções)fonte
Você não precisa criar uma configuração definida pelo usuário. A configuração interna "Macros de pré-processador" funciona perfeitamente. texto alternativo http://idisk.mac.com/cdespinosa/Public/Picture%204.png
Se você tiver vários destinos ou projetos que usam o mesmo arquivo de prefixo, use Macros de pré-processador não usadas em cabeçalhos pré-compilados, para que as diferenças em sua definição de macro não acionem um conjunto extra desnecessário de cabeçalhos pré-compilados.
fonte
Como um adendo, se você estiver usando essa técnica para definir strings em seu destino, é assim que eu tive que defini-los e usá-los:
Em Build Settings -> Preprocessor Macros, e sim as barras invertidas são críticas na definição:
E no código-fonte:
fonte
Você pode usar o
*_Prefix.pch
arquivo para declarar macros amplas do projeto. Esse arquivo geralmente está em seu grupo Outras fontes .fonte
Está em "GCC 4.2 Preprocessing" (ou apenas coloque "prepro" na caixa de pesquisa) ...
... no entanto, pela minha vida, não consigo fazer funcionar.
Eu tenho minhas configurações padrão de Depuração e Liberação e quero definir DEBUG = 1 na configuração de depuração. Mas depois de adicioná-lo como um valor:
(na janela de configurações)> Macros de pré-processador: DEBUG = 1
... nunca imprime / é chamado. Está me deixando louco...
fonte
#if DEBUG
à vida :) stackoverflow.com/a/47395485/2778502Em resposta ao comentário de Kevin Laity (veja a resposta de cdespinosa), sobre a seção de pré-processamento do GCC não aparecer nas configurações de compilação, faça com que o SDK ativo seja aquele que diz (SDK de base) depois dele e esta seção aparecerá. Você pode fazer isso escolhendo o menu Projeto> Definir destino ativo> XXX (SDK de base). Em diferentes versões do XCode (Base SDK) podem ser diferentes, como (Project Setting ou Project Default).
Depois que esta seção aparecer, você pode adicionar suas definições às Macros do Processador em vez de criar uma configuração definida pelo usuário.
fonte
Para projetos Xcode 9.4.1 e C ++. Adicionando
const char*
macros de pré-processador às compilações de depuração e de lançamento .Selecione seu projeto
Selecione Configurações de compilação
Pesquisar " Macros de pré-processador "
Abrir lista interativa
Adicione suas macros e não se esqueça de escapar da citação
Use no código-fonte como comum
const char*
fonte
Você pode duplicar o destino que possui a seção de pré-processamento, renomeá-lo com qualquer nome que desejar e, em seguida, alterar o valor da macro do pré-processador.
fonte