簡體   English   中英

Cmake在靜態庫檔案中生成文件擴展名

[英]Cmake produces file extensions in static library archives

我最近從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.cofoo.cpp.o 如果您強迫他們僅使用.o擴展名,它們將發生沖突。

您可以嘗試使用未記錄的,內部的,將來可能會發生的變化

set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)

我不知道它們是否仍然可用或是否可以使用。 我沒用過

正如您對帖子的評論所闡明的那樣,靜態庫內部的名稱並未真正使用,您不必擔心它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM