Cmake - Statische Bibliothek linken

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Cmake - Statische Bibliothek linken

Beitrag von Spiele Programmierer »

Ich habe bisher mit Cmake bzw. Unix Makefiles sehr wenig zu tun gehabt und möchte nun eine statische Bibliothek linken. Das Problem ist scheinbar, dass ein leerer String bei der Linkung ausgeführt wird(?) und dies mit "No such file or directory" fehlschlägt. Ich habe dann versucht, den Linker mit "SET(CMAKE_LINKER "ld")" oder "SET(CMAKE_CXX_LINK_EXECUTABLE "ld")" zu verändern, allerdings scheint das einfach ignoriert zu werden. Die Dateien werden alle erfolgreich kompiliert und ich rufe Cmake immer mit "cmake -G"Unix Makefile"" vorher auf.

Bei "make -VERBOSE 1" gibt es folgende Ausgabe:

Code: Alles auswählen

/usr/bin/cmake -P CMakeFiles/Diverse.dir/cmake_clean_target.cmake
/usr/bin/cmake -E cmake_link_script CMakeFiles/Diverse.dir/link.txt --verbose=1
"" cr libDiverse.a  CMakeFiles/Diverse.dir/home/?/LibrarySet/Source/Diverse/LowLevel-SSSE3.cpp.o [...] CMakeFiles/Diverse.dir/home/?/LibrarySet/Source/Diverse/Extern/PEvents/pevents.cpp.o
Error running link command: No such file or directory
make[2]: *** [libDiverse.a] Error 2
make[2]: Leaving directory `/home/?/LibrarySet/Cmake'
make[1]: *** [CMakeFiles/Diverse.dir/all] Error 2
make[1]: Leaving directory `/home/?/LibrarySet/Cmake'
make: *** [all] Error 2
Mein Cmake-File sieht so aus:

Code: Alles auswählen

cmake_minimum_required (VERSION 2.6)

SET (CMAKE_C_COMPILER             "/usr/bin/clang-3.6")
SET (CMAKE_C_FLAGS                "-Wall -std=c99 -ffast-math -msse2 -fno-rtti")
SET (CMAKE_C_FLAGS_DEBUG          "-g")
SET (CMAKE_C_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
SET (CMAKE_C_FLAGS_RELEASE        "-O4 -DNDEBUG")
SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")

SET (CMAKE_CXX_COMPILER             "/usr/bin/clang++-3.6")
SET (CMAKE_CXX_FLAGS                "-Wall -std=c++14 -ffast-math -msse2 -fno-rtti -stdlib=libc++")
SET (CMAKE_CXX_FLAGS_DEBUG          "-g")
SET (CMAKE_CXX_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELEASE        "-O4 -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")

SET(CMAKE_C_LINK_EXECUTABLE "/usr/bin/ld")
SET(CMAKE_CXX_LINK_EXECUTABLE "/usr/bin/ld")
SET(CMAKE_LINKER "/usr/bin/ld")

project (LibrarySet)
set_source_files_properties(../Source/Diverse/LowLevel-SSSE3.cpp COMPILE_FLAGS "-mssse3")
set_source_files_properties(../Source/Diverse/LowLevel-AVX2.cpp COMPILE_FLAGS "-mavx2")
set_source_files_properties(../Source/Diverse/String-SSSE3.cpp COMPILE_FLAGS "-mssse3")
set_source_files_properties(../Source/Diverse/String-AVX2.cpp COMPILE_FLAGS "-mavx2")
file(GLOB LzhamFiles ../Source/Diverse/Extern/Lzham/*.cpp)
file(GLOB DiverseFiles ../Source/Diverse/*.cpp)
list(REMOVE_ITEM DiverseFiles "${CMAKE_CURRENT_SOURCE_DIR}/../Source/Diverse/LowLevel-SSSE3.cpp")
list(REMOVE_ITEM DiverseFiles "${CMAKE_CURRENT_SOURCE_DIR}/../Source/Diverse/LowLevel-AVX2.cpp")
list(REMOVE_ITEM DiverseFiles "${CMAKE_CURRENT_SOURCE_DIR}/../Source/Diverse/String-SSSE3.cpp")
list(REMOVE_ITEM DiverseFiles "${CMAKE_CURRENT_SOURCE_DIR}/../Source/Diverse/String-AVX2.cpp")
add_library(Diverse STATIC
	../Source/Diverse/LowLevel-SSSE3.cpp
	../Source/Diverse/LowLevel-AVX2.cpp
	../Source/Diverse/String-SSSE3.cpp
	../Source/Diverse/String-AVX2.cpp
	${DiverseFiles}
	${LzhamFiles}
	../Source/Diverse/Extern/Miniz/tinfl.c
	../Source/Diverse/Extern/Miniz/miniz.c
	../Source/Diverse/Extern/PugiXml/pugixml.cpp
	../Source/Diverse/Extern/PEvents/pevents.cpp
)
#install (TARGETS Diverse DESTINATION bin)
Habt ihr irgendwelche Vorschläge woran das liegen kann?
Antworten