如何在CLion中编译子目录文件?

时间:2015-07-11 16:37:23

标签: c++ c cmake clion

我有一个名为CPrimerPlus6thEdition的项目。我正在尝试编译一个名为FirstLastNames.c的独立程序,它有自己的int main()函数。这是我的文件夹结构。

/CPrimerPlus6thEdition  
|-- /ProgrammingExercises  
    |-- /2IntroducingC
        |--FirstLastNames.c
CMakeLists.txt
main.cpp

这是我的CMakeLists.txt文件。

cmake_minimum_required(VERSION 3.2)
project(CPrimerPlus6thEdition)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(CPrimerPlus6thEdition ${SOURCE_FILES})
add_executable(CPrimerPlus6thEdition/ProgrammingExercises/2IntroducingC ${SOURCE_FILES})

1 个答案:

答案 0 :(得分:1)

add_executable(target_name file1 file2 file3)

http://www.cmake.org/cmake/help/v3.0/command/add_executable.html

第一个参数不是目录/路径,它是目标的名称(以及已编译的可执行文件的名称)。

尝试将其替换为CMakeLists.txt文件的最后两行(我假设/CPrimerPlus6thEdition是您的CLion项目的根目录):

add_executable(CPrimerPlus6thEdition ${SOURCE_FILES})
add_executable(FirstLastNames ProgrammingExercises/2IntroducingC/FirstLastNames.c)

如果你有另一个可执行文件要编译,并说它在/ CPrimerPlus6thEdition / ProgrammingExercises / 3Potato并且有文件Potato.c和Soil.c需要编译和链接:

add_executable(Potato ProgrammingExercises/3Potato/Potato.c ProgrammingExercises/3Potato/Soil.c)

请注意,FirstLastNamesPotato是目标名称,是构建后编译的可执行文件的名称。