Question
Eduard Lebedyuk · Jul 14, 2016

How to set compilation flags/qualifiers?

I have the following problem:

  • There are several classes with method generators, which needs to be compiled during every compilation
  • I have "ckub" qualifiers enabled in studio
  • I don't want to remove "u" qualifier because I need it very much in another namespaces

So how do I force classes with method generators to recompile when "u" qualifier is present?

Currently I solved this problem by setting studio qualifiers setting to "cukb /checkuptodate=expandedonly" which solved my problem, but I'd like some clarification as to why it helped. Here's  checkuptodate qualifier description:

Name: /checkuptodate
Description: Skip classes or expanded classes that are up-to-date.
Type: enum
Enum List: none,all,expandedonly,0,1
Default Value: expandedonly
Present Value: all
Negated Value: none

Questions:

  1. What is an "expanded class"?
  2. Why explicitly setting /checkuptodate=expandedonly forces classes with generators to compile every time?
  3. Is there any other, cleaner way to force classes with generators to compile every time?
0
0 1,017
Discussion (2)1
Log in or sign up to continue

Not answering your questions, but are you aware of the SetFlags and SetQualifiers methods of %SYSTEM.OBJ ? These can be used to set namespace-specific defaults as well as systemwide defaults. Maybe they'll let you ensure "u" behaviour for certain namespaces even if you remove the "u" flag from Studio's settings.

I need "u" flag in studio. During compilation the flags from user (studio) are combined with namespace or system flags. So even if I set namespace default flags without "u", the compiler would still use this flag as it is present in studio.