[英]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.co
和foo.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.