如何阻止CMake链接libstdc++; 我有一个非常简单的cMAKistist.txt,用于C++项目,它构建了一个共享库: add_library(foo SHARED ${HDR_PUBLIC} ${SOURCES})

如何阻止CMake链接libstdc++; 我有一个非常简单的cMAKistist.txt,用于C++项目,它构建了一个共享库: add_library(foo SHARED ${HDR_PUBLIC} ${SOURCES}),cmake,Cmake,链接库时,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) 给出输出:

链接库时,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,使用<强> -NoDebug的<< /St>作为链接器标志和<强> '-NoSTDcN+++ '/Stult>到编译器标志。您可能需要链接一些默认库,如“-lSystem”

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

来源:

到底是什么困扰了您,您试图避免的后果是什么?在我想要部署此项目的环境中,我不能依赖libstdc++.Hm。我想知道你是否有一个类似的选择,完全没有stdlib。不久前我迁移到了一个不同的构建系统,但是谢谢你的回答:)3-不是真的。您可以使用标准C++,例如用于放置新的和用于原子的。这些不依赖于任何标准库。编译C++和链接C是非常可能的,甚至是可取的,这样做的方法是使用Link语言来连接C。