32

アセンブリコードとCソースファイルを混合するavr-gccプロジェクトをビルドするためにEclipseを使用しています。いくつかのプロセスをmakefileに自動化する必要があるため、およびその他の理由で、Eclipseのmakefileの自動生成を削除したいと思います。

私は数回前にcmakeを使用しましたが、それに満足していたので、それを使用してソースファイルをコンパイルしてみたいと思います。すべてがCソースで期待どおりに実行されます。問題は、最後にいくつかのアセンブリファイル(実際には2つ)をコンパイルして、それらをターゲットに追加する必要があることです。

グーグルで検索しましたが、これを行う方法が見つかりませんでした。誰かがこれを行う方法についてのアイデアを持っていますか?

問題は、Eclipseに-xassembler-with-cppがあることです。

gcc引数リストに追加されました。asmファイルに対してのみこのパラメーターを標準のgcc引数リストに選択的に追加する方法を見つける必要があります。私はこれを行う方法を見つけられませんでした。

前もって感謝します

解決策:CMakeLists.txtで、すべてのファイルを同じリストにコンパイルするように設定します

enable_language(C ASM)

set ( SOURCES 
    foo.c
    bar.c
    foobar.s
)

add_executable(program  ${SOURCES} ) 

ツールチェーンファイルに次の場所を配置する必要があります。

SET(ASM_OPTIONS "-x assembler-with-cpp")
SET(CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS}" )

2行目は、asmファイルのコンパイル中に追加のオプションを渡す必要がある場合です。すべてのCFLAGSといくつかのASM_OPTIONSを渡したかった

4

2 に答える 2

33

CMakeは箱から出してアセンブラをサポートします。プロジェクトで「ASM」言語を有効にしてください。アセンブラソースファイルの前処理が必要な場合は、ソースファイルのコンパイルオプションも設定します。

project(assembler C ASM)
set_property(SOURCE foo.s APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp")
add_executable(hello foo.s bar.c)
于 2013-02-28T15:22:09.453 に答える
5

ソリューションに基づくと、最も単純なソリューションの1つは次のワンライナーです。

SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")
于 2015-03-16T01:07:34.523 に答える