这是我当前的 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.3)
set(CMAKE_C_FLAGS " -Wall -g ")
project( bmi )
file( GLOB SRCS *.cpp *.h )
add_executable( bmi ${SRCS})
这是从我的源目录构建的,但之后我必须清理所有额外的文件。我的问题是,如果我的所有源文件都位于同一源目录中,如何从构建目录构建它?
thanks
如果您确实需要使用文件(GLOB …),则此 CMakeLists.txt 应该可以工作:
cmake_minimum_required(VERSION 3.3)
project(bmi)
add_definitions("-Wall" "-g")
include_directories(${PROJECT_SOURCE_DIR})
file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/*.cpp)
add_executable(bmi ${SRC_FILES})
在这种情况下,每次添加或删除源文件时,您都必须从构建目录启动 cmake:
cmake <your_source_dir> -G <your_build_generator>
正如 Phil 提醒的那样,CMake 文档不建议使用 GLOB。但也有一些例外。您将获得更多这方面的信息post https://stackoverflow.com/questions/1027247/best-way-to-specify-sourcefiles-in-cmake.
如果您不满足这些例外情况,您宁愿列出源文件而不是使用 GLOB :
set(SRC_FILES ${PROJECT_SOURCE_DIR}/main.cpp
${PROJECT_SOURCE_DIR}/bmi.cpp
… )
注意:如果您在 .cpp 文件中 #include .h 文件,我认为没有任何理由将它们放入 add_executable 中,您只需要使用 include_directories 指定包含目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)