在Clion的IDE中指定命令行参数

时间:2022-05-03
本文章向大家介绍在Clion的IDE中指定命令行参数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近在linux上使用Clion这个C++ IDE,感觉很好,JetBrain的产品都很不错。

但是在跑简单例子的时候,使用到thread对象,直接build会出错

报错是:

thread::thread<void (&)(int), int>(void (&)(int), int&&)’:pthread_create’未定义的引用

就是说头文件的函数原型已经找到了,但是函数实现还没有找到,需要动态链接到pthread库上,然后就试着去run里面的edit_configure里面的cmdline parameter中手动添加-pthread参数

但是仍然无效,就很纳闷是什么原因。

后来发现在project目录下有个CmakeList文件,原来使用的是CMake编译器,所以应该在CMakeList文件中来指定命令行参数

比如:

cmake_minimum_required(VERSION 3.3)
project(C__NewFeature)

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

set(SOURCE_FILES main.cpp)
add_executable(C__NewFeature ${SOURCE_FILES})

然后重新build就成功了。

一般编译命令指定动态库时,程序会在系统默认的动态库路径去寻找,如果动态库不在指定路径上,需要手动指定路径

通常是 -L /usr/local/lib -pthread这样先指定路径,后指定库

但是在CMakeList中可以将二者分开,路径在link_directories("/usr/local/lib")中指定好

在编译命令参数中直接使用相应的库即可,比如:

cmake_minimum_required(VERSION 3.3)
project(BoostTest)

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

set(SOURCE_FILES main.cpp)
add_executable(BoostTest ${SOURCE_FILES})

link_directories("/usr/local/lib")