2016-04-07 23 views
0

Kendimi cmake ile tanıştırmaya çalışıyorum ve çok basit bir hobi çekirdeğini bir test yatağı olarak yazdım. bariz bir şey var ben varsayalımcmake derlemesi:/usr/bin/ld: giriş dosyası yok

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 
    ) 

: Burada

$ 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 dosyasıdır: Sorun bağlayıcı öncesinde kaynakları derleme için çağrılır gibi, bu hatayı alıyorum görünüyor olduğunu Burada özlüyorum. Özel bir bağlayıcı komut dosyasıyla derleme oluşturmanın uygun yolu nedir? CMake ile

cevap

1

, hata mesajı

/usr/bin/ld: no input files 

genellikle CKağıt kaynak dosyası olarak, add_executable/add_library komutuna geçirilen herhangi bir dosyayı, recongnize olmadığı anlamına gelir. Verilen durumda .S dosyaları CMake tarafından ASM-ATT dili için derleme dosyaları olarak değerlendirilmez. sizin montajcı dosyaları preprocessing gerekli değilse CKağıt verilen dil için kaynak dosyaları olarak ele alır, böylece

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

, sen .s veya .asm dosyalara yeniden adlandırabilir edilebilir: cmake ile montaj açıklar Wiki page, explicitely belirtiyor.