我想建立一个共享库。该库有一个源目录和一些子目录。
<div class="openbutton">
<a href="Footersite">
<p style="color: white; font-size: 17px;">Contact us</p>
</a>
</div>
因此,我想将lib添加到项目中,只希望将lib与功能1建立并链接。对于其他构建,我想使用feature1.c和feature2.c等构建它。 ...
我可以在cmake中使用哪种机制。在Eclipse CDT中,它类似于 资源配置=>删除或添加以构建。
非常感谢 Mathias
答案 0 :(得分:0)
您正在寻找在配置时传递给cmake
的选项。您可以这样定义它们:
option(WITH_FEATURE1 "Description of awesome feature (1)" ON)
option(WITH_FEATURE2 "Description of awesome feature (2)" OFF)
然后稍后在您的CMakeLists.txt
中查询它们,
if(${WITH_FEATURE1})
add_subdirectory(sub1)
endif()
现在,您的构建可以进行如下配置。
cmake -D WITH_FEATURE1=OFF -D WITH_FEATURE2=ON
,而在调用上面的cmake
方法时指定了默认选项(在不使用这些参数的情况下调用option
时)。
答案 1 :(得分:0)
我建议使用object libraries:
# first solution
add_library(feature1 OBJECT sub1/feature1.c)
add_library(feature2 OBJECT sub1/feature2.c)
add_library(feature3 OBJECT sub1/feature3.c)
if(conditions)
add_library(my_shared_library SHARED $<TARGET_OBJECTS:feature1>)
elseif(other_condition)
# other version
endif()
# second solution
add_library(my_shared_lib SHARED
common.c
$<$<BOOL:${WITH_FEATURE1}>:sub1/feature1.c>
$<$<BOOL:${WITH_FEATURE2}>:sub2/feature2.c>
)