2015-06-29 2 views
0

Я пытаюсь создать статическую библиотеку, например my_lib.a. Эта библиотека в зависимости от кода gSoap - file2.cpp.o, который генерируется из-за этой инструкции CMake (и 2 пользовательских команд):Как сообщить CMake при использовании add_library, чтобы не включать конкретный файл объекта

add_library(${TARGET_NAME} ${SRC_FILES} 
    ${GENERATED_SRC_FILES} ${GENERATED_H_FILES} ${GENERATED_RES_FILES}) 

file2.cpp присутствует в GENERATED_SRC_FILES. Все работает нормально до момента соединения.

/USR/бен/ар кр ../lib/my_lib.a CMakeFiles/my_lib.dir/SRC/file1.cpp.o CMakeFiles/my_lib.dir/SRC/file2.cpp.o

Если я позволю сделать, чтобы использовать эту команду, библиотека my_lib.a будет содержать file1.cpp.o и file2.cpp.o. Но на самом деле мне не нужен file2.cpp.o в моей * .a библиотеке.

Кто-нибудь знает, как мне управлять этим случаем, чтобы получить my_lib.a, который содержит только file1.cpp.o?

+0

Я хотел бы написать макрос, который удаляет '' file2.cpp' от $ {GENERATED_SRC_FILES} ' – drescherjm

+0

Или может быть просто список (REMOVE_ITEM GENERATED_SRC_FILES file2.cpp) – drescherjm

+0

Спасибо за идеи! :) Я попытался использовать «список (..)» непосредственно перед вызовом add_library(), но он не влияет на состояние связывания ... Что вы подразумеваете под созданием макроса? Когда я проверяю содержимое GENERATED_SRC_FILES, он содержит файлы .cpp/.c, но не файлы объектов * .o. Это означает, что для меня, что ссылка является полностью другой процедурой ... – Anton

ответ

0

Я думаю, что нашел решение. Идея состоит в том, чтобы скомпилировать некоторые файлы * .o с другой целью, которая не будет официальной. Чем в официальной цели вы можете поместить эти файлы, которые считаете важными. В моем случае у меня есть только один файл, который я не хочу, чтобы включить в * .a файл .. Итак:

первая цель:

add_library (gSoap_files ОБЪЕКТ $ {GENERATED_SRC_FILES} ...)

и официальное одно:

add_library ($ {TARGET_NAME} $ {SRC_FILES})

Я вдохновил меня с этой страницы:

http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library

Смежные вопросы