红联Linux门户
Linux帮助

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

发布时间:2017-06-11 00:04:21来源:linux网站作者:blackwall
最近在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")
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31399.html