gpt4 book ai didi

cmake cxx 仅在编译时标记

转载 作者:行者123 更新时间:2023-12-02 04:46:00 27 4
gpt4 key购买 nike

我想知道是否有办法只在编译时而不是在链接时将一些标志传递给编译器 (g++)。让我用一个例子来解释:我想这样构建我的程序:

g++ -c source1.cpp -o source1.o
g++ -c source2.cpp -o source2.o
g++ source2.o source1.o -o myProgram.c

为此,我创建了一个 CMakeLists.txt 文件,其中包含:

PROJECT(myProgram)
include_directories("${CMAKE_SOURCE_DIR}/inc")
aux_source_directory("${CMAKE_SOURCE_DIR}/src" SRC_FILES)
add_executable(${PROJECT_NAME} ${SRC_FILES})

然后添加这一行以将“-c”标志放入编译器:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -c")

但是通过这种方式,cmake 总是添加“-c”标志,即使 g++ 正在执行链接,即:

g++ -c source1.cpp -o source1.o
g++ -c source2.cpp -o source2.o
g++ -c source2.o source1.o -o myProgram.c

逻辑上 myProgram 不会被创建,因为 g++ 不运行链接(最后一条指令中的 -c)。

如何仅在编译时使用标志“-c”(或任何其他标志)?

最佳答案

代替

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -c")

尝试

add_compile_options(-c)

不知道为什么。您可以在同一个 add_compile_options 中使用多个空格分隔的选项。

关于cmake cxx 仅在编译时标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32799512/

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