代码之家  ›  专栏  ›  技术社区  ›  Fayeure

CMake有多个可执行文件会给我带来一个错误

  •  0
  • Fayeure  · 技术社区  · 4 年前

    我在cmake上遇到了一些问题:我在学校项目中使用cmake,有一个奖金部分,但我们必须为奖金部分编译另一个可执行文件,我尝试了以下方法:

    cmake_minimum_required(VERSION 3.10)
    
    project(philosophers)
    
    set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
    set(CMAKE_C_COMPILER /usr/bin/clang)
    set(CMAKE_C_STANDARD 99)
    set(CMAKE_C_FLAGS "-Wall -Wextra -Werror")
    set(CMAKE_EXE_LINKER_FLAGS "-lpthread")
    
    set(LIBFT ${CMAKE_CURRENT_SOURCE_DIR}/lib/libft42/libft.a)
    
    add_custom_command(OUTPUT ${LIBFT}
                        COMMAND make
                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/libft42)
    
    link_libraries(philo_bonus ${LIBFT})
    link_libraries(philo ${LIBFT})
    aux_source_directory(src SRC)
    aux_source_directory(src_bonus SRC_BONUS)
    
    add_executable(philo ${SRC} ${LIBFT})
    add_executable(philo_bonus ${SRC_BONUS} ${LIBFT})
    target_include_directories(philo
                                PUBLIC inc
                                PUBLIC lib/libft42/inc)
    target_include_directories(philo_bonus
                                PUBLIC inc_bonus
                                PUBLIC lib/libft42/inc)
    

    我删除了include\u目录,并将其替换为target\u include\u目录,因为我希望我的两个项目具有单独的include,但当我尝试 cmake -Bbuild -H. ,它说:

    CMake Error at CMakeLists.txt:23 (add_executable):
      Target "philo_bonus" links to itself.
    
    
    CMake Error at CMakeLists.txt:22 (add_executable):
      Target "philo" links to itself.
    
    
    CMake Error: Cannot determine link language for target "philo_bonus".
    CMake Error: CMake can not determine linker language for target: philo_bonus
    -- Generating done
    CMake Generate step failed.  Build files cannot be regenerated correctly.
    

    我不明白这里发生了什么,我在add\u可执行文件中没有做任何更改,在添加另一个之前,它工作得很好。

    0 回复  |  直到 4 年前
    推荐文章