C++ 如何告知CMake在使用add_库时不包含特定的对象文件

C++ 如何告知CMake在使用add_库时不包含特定的对象文件,c++,linker,cmake,gsoap,C++,Linker,Cmake,Gsoap,我正在尝试创建一个静态库,例如my_lib.a。 此库依赖于gSoap代码-file2.cpp.o,该代码是由于此CMake指令(和2个自定义命令)而生成的: file2.cpp出现在生成的\u SRC\u文件中。在连接之前,一切正常 /usr/bin/ar cr../lib/my_lib.a cmakfiles/my_lib.dir/src/file1.cpp.o cmakfiles/my_lib.dir/src/file2.cpp.o 如果我让Make使用这个命令,库my_lib.a将包含

我正在尝试创建一个静态库,例如
my_lib.a
。 此库依赖于gSoap代码-
file2.cpp.o
,该代码是由于此CMake指令(和2个自定义命令)而生成的:

file2.cpp
出现在生成的\u SRC\u文件中。在连接之前,一切正常

/usr/bin/ar cr../lib/my_lib.a cmakfiles/my_lib.dir/src/file1.cpp.o cmakfiles/my_lib.dir/src/file2.cpp.o

如果我让Make使用这个命令,库
my_lib.a
将包含
file1.cpp.o
file2.cpp.o
。但实际上我不需要
file2.cpp.o
在我的图书馆里


是否有人知道我必须如何管理这个案例,以获得只包含
文件1.cpp.o
我的库a

我想我找到了解决方案。 我们的想法是编译一些*.o文件,使用不同的目标,而不是官方目标。比起官方目标,你可以把这些文件视为重要文件。在我的情况下,我只有一个不想包含在*.a文件中的文件。。因此:

第一个目标是:

添加_库(gSoap_文件对象${生成的_SRC_文件}…)

官方的说法是:

添加库(${TARGET\u NAME}${SRC\u FILES})

我从这一页中获得灵感:


我将编写一个宏,从
${GENERATED_SRC_FILES}
中删除
file2.cpp
,或者只列出(删除项目GENERATED_SRC_FILES file2.cpp)谢谢您的想法在调用add_library()之前,我尝试使用“list(..”,但它对链接状态没有影响。。。创建宏是什么意思?当我检查生成的_SRC_文件的内容时,它包含.cpp/.c文件,但不包含对象文件*.o。这意味着,对我来说,链接是完全不同的过程…如果你从列表中删除cpp文件,那么它将不会作为库的一部分进行编译,因此你不必担心.o文件。我在CMake中看到了什么是宏,我不知道这个功能:)谢谢你的想法,我会尝试一下。
add_library(${TARGET_NAME} ${SRC_FILES}
    ${GENERATED_SRC_FILES} ${GENERATED_H_FILES} ${GENERATED_RES_FILES})