Peter Petrik
Peter Petrik

Reputation: 10185

Difference between COMPILE_FLAGS and COMPILE_OPTIONS

What is the difference between

COMPILE_FLAGS: Additional flags to use when compiling this target's sources.

and

COMPILE_OPTIONS: List of options to pass to the compiler.

In terms of resulting VS2010 solution these commands produce the same result:

target_compile_options(target PRIVATE "/option=test1")
set_target_properties(target PROPERTIES COMPILE_FLAGS "/option=test1")
set_target_properties(target PROPERTIES COMPILE_OPTIONS "/option=test1")

Upvotes: 13

Views: 5320

Answers (2)

steveire
steveire

Reputation: 11084

COMPILE_OPTIONS is a list, but COMPILE_FLAGS is a string.

set_target_properties(target PROPERTIES 
    COMPILE_OPTIONS "/option=test1;/option2=test2")
set_target_properties(target PROPERTIES 
    COMPILE_FLAGS "/option=test1 /option2=test2")

You can more-easily append to a list than to a string.

Also, COMPILE_OPTIONS is properly escaped, whereas some characters in COMPILE_FLAGS may need to be escaped manually or cause problems.

Upvotes: 20

vicenteherrera
vicenteherrera

Reputation: 1512

Can be used to the same end, but flags are associated with some target enviroment. So you could use different sets of flags for different enviroments.

Upvotes: 2

Related Questions