gpt4 book ai didi

c++ - Cmake 在静态库存档中生成文件扩展名

转载 作者:行者123 更新时间:2023-11-28 00:30:19 25 4
gpt4 key购买 nike

我最近从 Autotools 切换到 CMake,因为 CMake 似乎更适合跨平台开发,而且我注意到,当我构建 C++ 代码的静态库时,其中的所有文件都有一个后缀 .cpp.o

ar -t PA8/libgenericTZR.a 
genericTZR.cpp.o

我看过其他工具构建的其他库,但他们没有那样做。我不确定这是否真的是一件坏事,但是,如何让 CMake 在没有 .cpp 添加文件扩展名的情况下构建静态库?

这是我的 CMake 文件

add_executable(PA8 ISP_Charges.cpp genericTZR.cpp genericTZR.h)

set(LIBSRC genericTZR.c genericTZR.h)
add_library(genericTZR SHARED ${LIBSRC})
add_library(genericTZR SHARED $<TARGET_OBJECTS:myObjects>)

add_library(genericTZR-static STATIC ${LIBSRC})
set_target_properties(genericTZR-static PROPERTIES OUTPUT_NAME $

install (TARGETS PA8 DESTINATION bin)
install (TARGETS genericTZR genericTZR-static DESTINATION lib)
install (FILES "${PROJECT_BINARY_DIR}/PA8/genericTZR.h" DESTINA$

谢谢

最佳答案

根据 this thread on cmake list (我同意),尝试更改输出文件名不是一个好主意。

考虑链接中给出的示例:

 add_executable(foo foo.c foo.cpp)

生成的对象将是 foo.c.ofoo.cpp.o。如果您强制它们只有 .o 扩展名,它们就会发生冲突。

您可以尝试使用未记录的、内部的、将来可能会更改的

set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)

我不知道它们是否仍然可用或是否有效。我从未使用过它们。

正如对您帖子的评论所阐明的那样,静态库中的名称并没有真正被使用,您不必担心它们。

关于c++ - Cmake 在静态库存档中生成文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com