Aller au contenu principal
Version: Next

Compile project

Compile project {( {projectFile}{;}{options} )} : Object

ParamètresTypeDescription
projectFile4D.FileFichier .4DProject à compiler
optionsObjectObjet qui spécifie les options de compilation
RésultatObjectObjet contenant des informations sur le statut de compilation

Cette commande n'est pas thread-safe, elle ne peut pas être utilisée dans du code préemptif.

Historique
ReleaseModifications
20 R8Prise en charge du type "formObjectExpression"

Description

Compile project vous permet de compiler le projet hôte courant ou le projet spécifié dans le paramètre projectFile. Pour plus d'informations sur la compilation, consultez la page Compilation.

Par défaut, la commande utilise les options du compilateur définies dans les Paramètres de structure. Vous pouvez les remplacer en passant un paramètre options. Les syntaxes suivantes sont prises en charge :

  • Compile project() : compile le projet ouvert à l'aide des options définies dans les paramètres de structure
  • Compile project(options) : compile le projet ouvert. Les options définies remplacent les paramètres de structure
  • Compile project(projectFile) : compile le projet 4D projectFile en utilisant les options définies dans les paramètres de structure
  • Compile project(projectFile; options) : compile le projet 4D projectFile et les options définies remplacent les paramètres de structure

**Note :**Les bases de données binaires ne peuvent pas être compilées avec cette commande.

Contrairement à la fenêtre du Compilateur, cette commande nécessite que vous désigniez explicitement le ou les composants à compiler. Lors de la compilation d'un projet avec Compile project, vous devez déclarer ses composants à l'aide de la propriété components du paramètre options. A noter que les composants doivent déjà être compilés (les composants binaires sont pris en charge).

Le code compilé résultant sera stocké dans le dossier DerivedData ou Libraries du projet, en fonction de la propriété targets du paramètre options. Si vous souhaitez créer des fichiers .4dz, vous devez toujours compresser manuellement le projet compilé ou utiliser la fonctionnalité build application.

Si vous passez une collection vide dans targets, Compile project exécutera une vérification syntaxique sans compiler.

Les erreurs de compilation, le cas échéant, sont retournées sous forme d'objets dans la collection errors.

Note : Vous ne pouvez pas appeler cette commande quand une autre compilation est en cours d'exécution (par exemple, une compilation lancée depuis la fenêtre de compilation).

Paramètre options

Le paramètre options est un objet. Voici les options de compilation disponibles :

PropriétéTypeDescription
componentsCollectionCollection d'objets 4D.File vers des composants dépendants (doit être déjà compilé)
defaultTypeForButtonsIntegerValeur possible : Is real ou Is longint
defaultTypeForNumericsIntegerValeur possible : Is real ou Is longint
generateSymbolsBooleanTrue pour générer des informations sur les symboles dans l'objet .symbols renvoyé
generateSyntaxFileBooleanVrai pour générer un fichier de syntaxe pour la complétion de code dans le dossier \Resources\en.lproj du projet
generateTypingMethodsText"reset" or "append" to generate typing methods. If value is "append", existing variable declarations won't be modified (compiler window behavior). If value is "reset" existing variable declarations are removed beforehand.
plugins4D.Folder objectPlug-ins folder to be used instead of the Plugins folder of the current project. This property is only available with the projectFile syntax.
targetsCollection de chaînesPossible values: "x86_64_generic", "arm64_macOS_lib". Pass an empty collection to execute syntax check only
typeInferenceText"all": The compiler deduces the types of all variables not explicitly declared, "locals": The compiler deduces the types of local variables not explicitly declared, "none": All variables must be explicitly declared in the code (legacy mode), "direct": All variables must be explicitly declared in the code (direct typing).
warningsCollection d'objetsDefines the warnings state
[].majorNumberWarning main number, before the dot
[].minorNumberWarning second number, after the dot
[].enabledBooleanWarning activation state

Note: When the warnings attribute is not defined in the options object, the Compile project command uses the default warning generation statuses defined in the settings.

Résultat

The object returned by Compile project has up to three properties:

PropriétéTypeDescription
successBooleanVrai si la sauvegarde a été effectuée avec succès, sinon faux.
errorsCollection d'objetsAvailable only in case of error or warning. Collection of objects describing compilation errors or warnings
[].isErrorBooleanError if True, warning otherwise
[].messageTextMessage d'erreur
[].codeObjectcode object
[].lineNumberLine number of error in the code. For class methods, line number in the function
[].lineInFileNumberLine number in the file (different from "line" for class methods, and takes into account the %attributes prefix line)
symbolsObjectAvailable only if generateSymbols option is set to True:
symbols.interprocessVariablesObjectList of all interprocess variables
symbols.interprocessVariables.variablesCollectionCollection of variable objects
symbols.interprocessVariables.sizeNumber
symbols.processVariablesObjectList of all process variables
symbols.processVariables.variablesCollectionCollection of variable objects
symbols.processVariables.sizeNumber
symbols.localVariablesCollection d'objetsList of local variables per method
symbols.localVariables[].codeObjectcode object
symbols.localVariables[].variablesCollectionCollection of variable objects
symbols.methodsCollection d'objetsList of methods
symbols.methods[].codeObjectcode object
symbols.methods[].callCountNumberNumber of times this method has been called
symbols.methods[].paramsCollectionCollection of parameter types (Value type numerical codes)
symbols.methods[]. threadSafeBooleanIndicates if this method is thread safe

For more information, see Compilation tools.

variable objects

interprocessVariables.variables and processVariables.variables contain objects with the following structure:

PropriétéTypeDescription
nameTextName of the variable
typenumberType of the variable (like Value type command)
arrayDimensionnumberFor arrays only: 1 for mono dimension arrays, 2 for two-dimension arrays
codeObjectFor process and interprocess variables: descriptor of where the variable has been defined
code object

The code property in methods.code and errors.code is an object with the following properties:

PropriétéTypeDescription
typeText"projectMethod", "formObjectMethod", "formMethod", "databaseMethod", "triggerMethod", "executeOnServer" (when calling a project method with the Execute on Server attribute), "executeFormula" (when executing a formula via PROCESS 4D TAGS or evaluation of a formula in a 4D Write Pro document), "class", "classFunction", "formObjectExpression" (for errors occuring in expressions associated to form objects)
pathTextMethod path (same format as METHOD OPEN PATH)
file4D.FileMethod file
Returned depending on the value of the type property:
methodNameTextMéthode
tableNumberNumber of the table (returned for a trigger, a table form method or a table form object method)
formNameTextForm name (returned for a form method)
objectNameTextForm object name (returned for an object method)
propertyNameTextForm object property name (returned for a form object expression)
classNameTextClass name
functionNameTextNom de la fonction de classe
databaseMethodNumberDatabase method index

Exemples

To perform a syntax check only, pass an empty collection to the targets parameter:

 var $status : Object
var $options:={}
$options.targets:=New collection //Empty collection for syntax checking
$status:=Compile project($options)

Compile the current project using the compiler options of the Structure Settings only:

 var $status : Object
$status:=Compile project

On a Silicon Mac, compile the current project to ARM only:

 var $status : Object
var $options:={}
$options.targets:=New collection("arm64_macOS_lib")
$status:=Compile project($options)

Compile a project other than the current project:

 var $status : Object
var $projectFile: 4D.File
$projectFile:=Folder(fk documents folder).file("Databases/myApp/Project/myApp.4DProject")
$status:=Compile project($projectFile)

Compile a project and declare its component:

 var $status : Object
var $component : 4D.File
var $options:={}
$component:=Folder(fk documents folder).file("Components/myComponent.4dz")
$options.components:=New collection($component)
$status:=Compile project($options)

Disable warnings 518.1 and 518.2 when compiling your project:

var $options:={}
$options.warnings:=[]$options.warnings.push({major: 518; minor: 1; enabled: False})
$options.warnings.push({major: 518; minor: 2; enabled: False})
var $result:=Compile project($options)

Voir également

BUILD APPLICATION