我目前正在使用JetBrains CLion IDE在C中进行一些Project Euler挑战。当我用Python和Java(分别用PyCharm和IntelliJ)完成这些任务时,我总是能够创建一个名为“ProjectEuler”的项目,并添加任何数量的源文件,我可以独立执行。但是,这在CLion中似乎是不可能的。我用来解决问题的每个源文件都包含一个main()函数,每次我试图编译时,CMake都对此感到不快(“'main'的多个定义”)。
有没有办法将CLion配置为每次只编译和执行项目中的单个源文件,而不必每次都重写我的CMakeLists.txt或为每个问题创建新项目?
我知道C是编译的,不像Java或Python那样解释,但我可以想象手动编译每个源文件。有没有办法配置CLion来做同样的事情?如果是,如何进行?
5条答案
按热度按时间smtd7mpg1#
您可以在CMakeLists.txt中为每个问题定义多个可执行文件。
而不是
您可以定义
然后,您将为每个可执行文件(problem1、problem2等)获取一个运行配置,您可以独立运行该配置。在这种情况下,您不必每次都重写,而是只需将新的源文件添加到新的可执行文件中。
fgw7neuy2#
即使我也面临着同样的问题,每次编辑CMake文件并添加可执行文件是一项累人的工作。所以我找到了一个解决办法,
有一个插件可以为你无缝地完成它。
只需将此plugin添加到您的CLion中,无论您想使哪个文件都是可执行的,右键单击并将其添加为可执行文件,
它将自动编辑您的CMake文件。
链接方式:
https://plugins.jetbrains.com/plugin/8352-c-c--single-file-execution
h43kikqp3#
您可以使用
然后在每个目录中创建另一个CMakeLists.txt,如下所示:
如果你想在编译中自动添加文件,你可以使用
file(GLOB SOURCE_FILES *.cpp)
。但请记住,这种“伎俩”是强烈不鼓励的。这也将自动将构建配置添加到CLion。
41zrol4v4#
您可以将这些行添加到CMakeLists.txt中。
每次从项目中添加或删除文件时,都必须重新加载cmake项目(工具-> Cmake)。如果您添加更多的文件,构建时间也会增加。或者,您可以创建更多的目录和子目录,并使用
file(GLOB_RECURSE APP_SOURCES path/to/*.c)
,这样它将只构建这些文件。3pvhb19x5#
在CMakeLists.txt中为每个源文件添加可执行文件后,必须通过按右上角的
Reload
按钮重新加载文件,然后将run debug configuration
设置为他想要运行的源文件名。