2013-02-25 2 views
9

に対してリンクからCMakeのを停止します。これをやめないようにするにはどうすればいいですか?はどのように共有ライブラリを構築するC++のプロジェクトのための非常にシンプルなCMakeLists.txtを持っているのlibstdC++

+0

正確にあなたが避けるようにしようとしている結果であることを悩み、あなた、何ですか? – Antonio

+0

私はこのプロジェクトを展開したい環境ではlibstdC++に依存できません。 –

答えて

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

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

+0

3 - 真ではない。新規の配置には、アトミックにはなどの標準のC++インクルードを使用できます。これらは標準ライブラリに依存しません。 C++でコンパイルしてCとリンクすることも可能ですし、それを行う方法はLINKER_LANGUAGEを使用してCとリンクすることです。ハックではありません。 – andrewrk

8

コンパイラフラグに-stdlib = libC++を追加できます。

簡単な例:

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) 

は、出力を与える:デフォルトでは

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

:STDC++へ

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) 

リンク:

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

[更新]

あなたがすべてでC++のlibにリンクする必要がない場合 - フラグをコンパイラに'-nodefaultlibs'リンカフラグなどと'-nostdinC++'を使用しています。 '-lSystem'のようないくつかのデフォルトライブラリをリンクする必要があるかもしれません。

+0

Hm。私はstdlibには全く同じオプションがあるのだろうかと思います。私はずっと前に別のビルドシステムに移行しましたが、答えに感謝します:) –

+0

この回答は機能しません。代わりに鉱山を参照してください。 – andrewrk

関連する問題