我有一个非常简单的CMakeLists.txt用于C++项目,它构建了一个共享库:
add_library(foo SHARED
${HDR_PUBLIC}
${SOURCES})
Run Code Online (Sandbox Code Playgroud)
链接库时,CMake自动使用-lstdc ++.我怎么能阻止它这样做?
小智 7
您可以将-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)
Run Code Online (Sandbox Code Playgroud)
给出输出:
"/usr/bin/ld" ... -o test ... -lc++ ...
Run Code Online (Sandbox Code Playgroud)
默认情况下:
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)
Run Code Online (Sandbox Code Playgroud)
链接到stdc ++:
"/usr/bin/ld" ... -o test ... -lstdc++ ...
Run Code Online (Sandbox Code Playgroud)
[更新]
如果你根本不需要链接到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)
Run Code Online (Sandbox Code Playgroud)
资料来源:http : //cmake.3232098.n2.nabble.com/setting-LINKER-LANGUAGE-still-adds-lstdc-td7581940.html
| 归档时间: |
|
| 查看次数: |
12287 次 |
| 最近记录: |