同じソースファイルからビルドする2つのプロジェクトが必要です。2つ目のプロジェクトには小さなサブセットがあり、いくつかの異なる定義とビルドフラグがあります。
私がこのようなことを試みるとき:
SET (this_target PROJECT1)
PROJECT(${this_target})
...
ADD_EXECUTABLE(#{this_target} ...)
SET (this_target PROJECT2)
PROJECT(${this_target})
...
add_definitions (-DMYDEFINE)
TARGET_LINK_LIBRARIES( ${this_target} -myflag )
ADD_EXECUTABLE(#{this_target} ...)
最終的には、適切なソースファイルなどを使用して2つのプロジェクトを作成しますが、何らかの理由で、少なくともVisual Studio 2010では、両方のプロジェクトでMYDEFINEが定義され、リンカーフラグにmyflagが含まれているようです。
なぜそれがファイルに対して機能するように見えるのかはわかりませんが、フラグに対しては機能しません。