2017-05-21 5 views
0

私はCMakeについては初心者ですので、私はあなたの助けをしたいと思います。 A.c、B.cpp、c.cppのソースファイルに依存する実行可能なターゲットTがあるとしましょう。 A.cを特定のフラグでコンパイルし、オブジェクトファイルA.oを作成したいと思います。簡単にするために、BとCはg ++で同じフラグセットでコンパイルされ、対応するオブジェクトファイルはB.o C.oとして作成されるものとしましょう。次に、これらのオブジェクトファイルをリンクし、gccでTを生成することができます。私は定期的なmakefileを使っていくつかのステップでそれを行うことができることを知っています。基本的には、特定のフラグを持つA.cと残りのファイルを同じフラグでコンパイルするのに問題があります。私はどのように正確にそれがCMakeで行う必要がありますか分からないのですか?CMakeを使用して、単一のターゲットに対して異なるオプションで異なるソースファイルをコンパイルするには?

add_executable(T A.c B.cpp C.cpp) 

私はcmakeのはtarget_compile_options()を提供しています知っているが、私は私の場合のためにそれを使用することはありませんか?私はそれが目標のグローバルフラグに設定することができると思うが、私は何の後ではない!

+0

は、交流のための別のライブラリのターゲットを作成することでしたが、https://cmake.org/Wiki/CMake/Tutorials/ [ここ](で説明したようにOBJECT引数で渡されましたObject_Library)に必要なオプションとフラグを設定します。実際のターゲットでは、 'add_executable(T B.cpp C.cpp $ )'を使うことができました。したがって、BとCは別のオプションでコンパイルされ、A.oとリンクされます。 – Aref

答えて

0

個々のソースファイルに特定のフラグを設定する場合は、ソースファイルのプロパティを操作する必要があります。これを行うには、set_property(SOURCE...)またはset_source_files_properties()のいずれかを使用します。興味のあるソースプロパティはCOMPILE_DEFINITIONSCOMPILE_FLAGSです。例えば:私はやってしまった何を

# set_source_files_properties() always replaces any previous value 
set_source_files_properties(A.c PROPERTIES 
    COMPILE_DEFINITIONS MySpecialOption=1 
) 

# Only set_property() allows appending to existing values 
set_property(SOURCE A.c APPEND_STRING PROPERTY 
    COMPILE_FLAGS " -Wno-unused" 
) 
関連する問題