• 在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")
    
    
    Happy Ending Every Day
  • 相关阅读:
    AtCoder Regular Contest 061
    Codeforces Round #370 (Div. 2)
    2016 ACM/ICPC Asia Regional Dalian Online
    HDU 5513 Efficient Tree
    Codeforces Round #104 (Div. 1)
    2016 Hunan Province Programming Contest
    2016 Multi-University Training Contest 7
    2016中国大学生程序设计竞赛
    聚会「AHOI 2008」
    游戏「AHOI / HNOI2018」
  • 原文地址:https://www.cnblogs.com/burningTheStar/p/6869670.html
Copyright © 2020-2023  润新知