2013-02-25 12 views
9

Ich habe eine sehr einfache CMakeLists.txt für ein C++ Projekt, das eine gemeinsame Bibliothek baut zu stoppen. Wie kann ich damit aufhören?Wie CMake aus Verknüpfung mit libstdC++

+0

Was ist genau das Sorgen Sie, was sind die Folgen Sie versuchen zu vermeiden? – Antonio

+0

Ich kann nicht auf libstdC++ in den Umgebungen abhängen, in denen ich dieses Projekt bereitstellen möchte. –

Antwort

2
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") 
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") 
set_target_properties(yourtarget PROPERTIES LINKER_LANGUAGE C) 

Quelle: http://cmake.3232098.n2.nabble.com/setting-LINKER-LANGUAGE-still-adds-lstdc-td7581940.html

+0

3 - nicht wahr. Sie können Standard-C++ - Includes wie für die Platzierung neu und für Atomics verwenden. Diese hängen nicht von irgendwelchen Standardbibliotheken ab. Es ist durchaus möglich und sogar wünschenswert, mit C++ zu kompilieren und mit C zu verknüpfen, und das ist die Verwendung von LINKER_LANGUAGE, um mit C zu verknüpfen. Es ist kein Hack. – andrewrk

8

Sie können Compilerflags -stdlib = libC++ hinzufügen.

Einfaches Beispiel:

cmake_minimum_required(VERSION 2.8.4) 
project(test) 
set(CMAKE_VERBOSE_MAKEFILE TRUE) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v -stdlib=libc++") 
add_executable(test main.cpp) 

Geben Ausgang:

"/usr/bin/ld" ... -o test ... -lc++ ... 

standardmäßig:

cmake_minimum_required(VERSION 2.8.4) 
project(test) 
set(CMAKE_VERBOSE_MAKEFILE TRUE) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v") 
add_executable(test main.cpp) 

Link STDC++:

"/usr/bin/ld" ... -o test ... -lstdc++ ... 

[update]

Wenn Sie nicht brauchen, um alle zu C++ lib zu verknüpfen - verwenden '-nodefaultlibs' als Linker-Flag und '-nostdinC++' Flagge Compiler. Möglicherweise müssen Sie einige Standardbibliotheken verknüpfen, z. B. '-lSystem'.

+0

Hm. Ich frage mich, ob es eine ähnliche Option für keine stdlib gibt. Ich bin vor einiger Zeit in ein anderes Build-System migriert, aber danke für die Antwort :) –

+0

Diese Antwort funktioniert nicht. Sehen Sie stattdessen meine. – andrewrk

Verwandte Themen