2016-04-07 26 views
0

私はcmakeについて熟知していますが、テストベッドとしてアセンブリで書かれた非常に単純なホビーカーネルを選択しました。私は明らかに何かがあると仮定しcmakeアセンブリ:/ usr/bin/ld:入力ファイルがありません

cmake_minimum_required(VERSION 2.8) 
project(kernel ASM-ATT) 

enable_language(ASM-ATT) 

set(CMAKE_ASM-ATT-COMPILER as) 

set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/linker.ld) 
set(CMAKE_EXE_LINKER_FLAGS "-N -T${LINKER_SCRIPT}") 

add_executable(${CMAKE_PROJECT_NAME} 
    multiboot.S 
    start.S 
    ) 

set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES 
    LINK_DEPENDS "${LINKER_SCRIPT}" 
    LINKER_LANGUAGE ASM-ATT 
    ) 

$ make 
[100%] Linking ASM-ATT executable kernel 
/usr/bin/ld: no input files 
CMakeFiles/kernel.dir/build.make:69: recipe for target 'kernel' failed 
make[2]: *** [kernel] Error 1 
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/kernel.dir/all' failed 
make[1]: *** [CMakeFiles/kernel.dir/all] Error 2 
Makefile:83: recipe for target 'all' failed 
make: *** [all] Error 2 

はここCMakeLists.txtファイルです:問題は、リンカーが、私はこのエラーを取得しています、以前のソースをコンパイルするために呼び出されるようにそれはそうであり、私はここで行方不明です。カスタムリンカースクリプトを使用してアセンブリを構築する適切な方法は何ですか? CMakeのでは

答えて

1

、エラーメッセージが

/usr/bin/ld: no input files 

通常cmakeのは、ソースファイルとして、add_executable/add_libraryコマンドに渡された任意のファイルを、recongnizeていないことを意味します。

この場合、.SファイルはASM-ATT言語用のアセンブラファイルとしてCMakeによって処理されません。あなたのアセンブラファイルが前処理を必要とされていない場合はcmakeのは、与えられた言語のソースファイルとしてそれらを扱いますので、あなたは、.sまたは.asmファイルにそれらの名前を変更することがあり

.S files, i.e. assembler files which require preprocessing, are not supported

:CMAKEで組み立て説明Wiki pageは、明示的に述べています。

関連する問題