共有ライブラリを構築する C++ プロジェクト用の非常に単純な CMakeLists.txt があります。
add_library(foo SHARED
${HDR_PUBLIC}
${SOURCES})
ライブラリをリンクするとき、CMake は自動的に -lstdc++ を使用します。これをやめさせるにはどうすればよいですか?
共有ライブラリを構築する C++ プロジェクト用の非常に単純な CMakeLists.txt があります。
add_library(foo SHARED
${HDR_PUBLIC}
${SOURCES})
ライブラリをリンクするとき、CMake は自動的に -lstdc++ を使用します。これをやめさせるにはどうすればよいですか?
-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++ ...
デフォルトでは:
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)
stdc++ へのリンク:
"/usr/bin/ld" ... -o test ... -lstdc++ ...
[アップデート]
C++ lib にリンクする必要がまったくない場合は、'- nodefaultlibs'をリンカー フラグとして使用し、' - nostdinc++'をコンパイラ フラグとして使用します。'-lSystem'など、いくつかのデフォルト ライブラリをリンクする必要がある場合があります。
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