gpt4 book ai didi

cmake - 添加共享库和可执行文件,编译源文件两次

转载 作者:行者123 更新时间:2023-12-02 21:59:20 25 4
gpt4 key购买 nike

gcc (GCC) 4.7.2
cmake version 2.8.11

你好,

我想知道是否有办法解决以下问题。我在下面强调了:

SET(GW_SOURCE_FILES 
module.c
module_imp.c
module_message.c
module_config.c
module_queue.c)

# Compiles the source files to create the shared library called dlg_gw.so
ADD_LIBRARY(dlg_gw SHARED ${GW_SOURCE_FILES})

# Link additional libraries to this
TARGET_LINK_LIBRARIES(dlg_gw gc srl ${APRUTIL})

# ISSUE: Now I want to create my executable using the same source files. module.c is where my 'void main(void)' is.
# However, I have some functions in there which will also be part of the library.
# However, this will recompile the same source files all over again. I don't really like that behaviour.
ADD_EXECUTABLE(sun_gw ${GW_SOURCE_FILES})

# After the executable is created, link the libraries with it.
TARGET_LINK_LIBRARIES(sun_gw ${APR} driver dlg_gw dlg_sip dlg_ss7 dlg_isdn)

我希望您能看到上面的问题,因为我将相同的源文件编译两次。创建dlg_gw库一次。然后再次创建可执行文件sun_gw

我正在考虑取出“void main(void)”并将其放入一个名为runtime.c的新文件中,然后执行以下操作:

ADD_EXECUTABLE(sun_gw runtime.c)

但是上面需要我更改一些源代码。

非常感谢您的任何其他建议,

最佳答案

CMake 2.8.8 中引入的“OBJECT”库类型可用于避免重复构建相同的文件。

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

关于cmake - 添加共享库和可执行文件,编译源文件两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17211804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com