Vì vậy, tôi đang xây dựng một thư viện được chia sẻ, trong số hai thư viện tĩnh.làm thế nào để đặt dòng lệnh trình biên dịch args ở những nơi cụ thể bằng cách sử dụng cmake
This answer nói cách cần làm là chèn -Wl,--whole-archive
trước libs tĩnh của tôi, -Wl,--no-whole-archive
sau chúng.
Vì vậy, những gì tôi có trong cmake tại thời điểm cho các thư viện chia sẻ là:
add_library(wittyPlus SHARED empty.cpp)
target_link_libraries(wittyPlus
${wtdbosqlite}
${WT_LIBRARIES}
${DB_LIBRARIES}
${Boost_LIBRARIES}
app models
)
Vì vậy, những gì tôi cần là cho nó thêm -Wl,--whole-archive
trước app
và models
, sau đó -Wl,--no-whole-archive
sau khi họ (để nhập thư viện chuẩn không được xuất bởi lib được chia sẻ).
Cách dễ nhất để làm điều này trong CMake là gì?
Addition: Vì vậy, tôi muốn sử dụng những thứ cmake tiêu chuẩn càng nhiều càng tốt, như vậy tôi không cần phải làm bất cứ việc làm thêm cho các cửa sổ được xây dựng, như CMake vui lòng loại bỏ các định nghĩa biên dịch không được hỗ trợ trên nền tảng đang được xây dựng.
Bạn đã tìm thấy một tác phẩm xung quanh không yêu cầu tệp rỗng \ empty.cpp' không? –
Không, tôi luôn sử dụng empty.cpp. – matiu
Tôi có vẻ như bạn có thể làm 'tập tin (WRITE empty.cpp" ")' nếu bạn không muốn gây ô nhiễm cây nguồn thực của bạn với các tập tin rác. –