Cmake在静态库档案中生成文件扩展名

泰勒·拉米雷斯(Taylor Ramirez)

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

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

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

这是我的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$

谢谢

莱昂纳多

根据cmake列表上的该线程(我同意),尝试更改输出文件名不是一个好主意。

考虑链接中给出的示例:

 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)

我不知道它们是否仍然可用或是否可以使用。我从没用过。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章