Seite 1 von 1

CMake und VisualStudio fügen was ein, was da nicht hin soll

Verfasst: 27.08.2022, 12:06
von Schrompf
Moin,

ich will seit Ewigkeiten von meinen handgepflegten 20 jahre alten VisualStudio-Solutions weg. Nehm ich halt klassisch CMake. Dabei will ich auch gleich alles von Boost rauswerfen, hatte ich auch schon ewig vor. Und das Einzige, was ich von Boost wirklich brauche, ist Context, deren CMakeList.txt ich jetzt radikal zusammengestrichen habe. Ist immer noch zwei Seiten lang, kann ich gern posten bei Bedarf.

Darin gibt's jedenfalls einen einfachen Aufruf

Code: Alles auswählen

// ergibt "1> [CMake] Sources sind asm/make_x86_64_ms_pe_masm.asm;asm/jump_x86_64_ms_pe_masm.asm;asm/ontop_x86_64_ms_pe_masm.asm"
message("Sources sind ${IMPL_SOURCES}")
add_library(boost_context  ${IMPL_SOURCES})
Und der ergibt nach Ninja generiert dann drei funktionierende MASM-Aufrufe und das Linken:

Code: Alles auswählen

FAILED: SourceExt/context/boost_context.lib 
cmd.exe /C "cd . && C:\PROGRA~1\VISUAL~2\VC\Tools\MSVC\1433~1.316\bin\Hostx64\x64\lib.exe cr SourceExt\context\boost_context.lib /machine:x64 SourceExt\context\CMakeFiles\boost_context.dir\asm\make_x86_64_ms_pe_masm.asm.obj SourceExt\context\CMakeFiles\boost_context.dir\asm\jump_x86_64_ms_pe_masm.asm.obj SourceExt\context\CMakeFiles\boost_context.dir\asm\ontop_x86_64_ms_pe_masm.asm.obj  && cd ."
Man bemerke das kleine "cr" direkt am Anfang der CommandLineArgs. Wo kommt das her? Der Linker hält es jedenfalls für eine weitere Eingabedatei und findet die nicht, deswegen scheitert das Linken und ich komm nicht weiter. Ich finde kein "cr" im ganzen Projekt.