Seite 1 von 1

Cmake - Statische Bibliothek linken

Verfasst: 31.07.2015, 22:24
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?