NX2306 C++二次开发系列(三)CLion开发环境搭建

        NX2306的二次开发编译器使用的是VS2019,由于之前一直用的jetbrains家的编辑器,VS2019那个操作逻辑真的接受不了,所以就改到用CLion来做编辑器

        当然,编译器和调试工具仍然需要使用VS2019,所以VS2019仍然是必须安装的,网上教程很多,这里就不复述了

1、下载安装CLion

官方下载地址:Download CLion: A Smart Cross-Platform IDE for C and C++

目前针对非商业使用是免费的,安装流程这里就不复述了,双击安装包即可安装

2、环境配置

打开 “文件”-->“设置”,然后打开“构建、执行、部署”-->“工具链”,在工具链中添加VS2019的工具链

打开 “文件”-->“设置”,然后打开“构建、执行、部署”-->“CMake”,添加构建类型为RelWithDebInfo的配置文件

3、目录结构

项目
└─ test  //根目录
   ├─ cmake-build-relwithdebinfo-visual-studio     //编译文件目录
   ├─ KKTools                                      //程序代码目录,可以创建多个目录
   │  ├─ UI                                        //UI编辑器保存文件
   │  │  ├─ KKTools.cpp
   │  │  ├─ KKTools.dlx                            //对话框文件
   │  │  └─ KKTools.hpp
   │  ├─ CMakeLists.txt                            //程序依赖CMAKE文件
   │  ├─ KKTools.cpp                               //C++源文件
   │  └─ KKTools.hpp                               //C++头文件
   ├─ lib                                          //依赖库目录
   ├─ utils                                        //公共工具代码
   ├─ CMakeLists.txt                               //主要CMAKE文件
   ├─ NX_all_head.h                                //NX全部头文件引用
   └─ NXSigningResource.cpp                        //模板文件

4、主要CMAKE文件

cmake_minimum_required(VERSION 3.20)
project(KKTools)

add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_GENERATOR_TOOLSET "Visual Studio 16 2019")
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output)

add_compile_options("/Zi")  
add_link_options("/DEBUG")
include_directories(. ./utils ./KesoObject ./lib/include "C:/Program Files/Siemens/NX2306/UGOPEN")
link_directories(./lib "C:/Program Files/Siemens/NX2306/UGOPEN")

add_subdirectory(utils)        #该目录是一些公用的代码,比如一些字符串处理函数
add_subdirectory(KKTools)      #该目录为实际功能代码,可以添加多个功能代码分别编译

5、程序用CMAKE文件

cmake_minimum_required(VERSION 3.20)
project(KKTools)

add_library(KKTools SHARED ../NXSigningResource.cpp
                                KKTools.cpp)     #这里包含所有程序源代码
target_link_libraries(KKTools
        utils_lib                          #公共库
        KesoObject_lib                     #公共库
        libameopencpp.lib                  #从这里后面全部是NX内部依赖库,每个程序都需要引用
        libanimationdesigneropencpp.lib
        libatscppunit.lib
        libcoatingsopencpp.lib
        libcontactlessinspectionopencpp.lib
        libdmuopencpp.lib
        libdocumentopencpp.lib
        libdsedesignworkflowopencpp.lib
        libdseopencpp.lib
        libdseplatformopencpp.lib
        libeclassstandardopencpp.lib
        libfabricopencpp.lib
        libjoinopencpp.lib
        liblinedesigneropencpp.lib
        libmbdopencpp.lib
        libmfgamopencpp.lib
        libmfgmlpopencpp.lib
        libmpaopencpp.lib
        libnxopencpp.lib
        libnxopencpp_aecdesign.lib
        libnxopencpp_annotations.lib
        libnxopencpp_appearance.lib
        libnxopencpp_assemblies.lib
        libnxopencpp_automatedtesting.lib
        libnxopencpp_bodydes.lib
        libnxopencpp_cablerouter.lib
        libnxopencpp_cadcaeprep.lib
        libnxopencpp_cae.lib
        libnxopencpp_cam.lib
        libnxopencpp_capitalintegration.lib
        libnxopencpp_clouddm.lib
        libnxopencpp_collaborationapplication.lib
        libnxopencpp_diagramming.lib
        libnxopencpp_diagramminglibraryauthor.lib
        libnxopencpp_die.lib
        libnxopencpp_display.lib
        libnxopencpp_drafting.lib
        libnxopencpp_drawings.lib
        libnxopencpp_electricalrouting.lib
        libnxopencpp_facet.lib
        libnxopencpp_features.lib
        libnxopencpp_fields.lib
        libnxopencpp_formboard.lib
        libnxopencpp_gateway.lib
        libnxopencpp_geometricanalysis.lib
        libnxopencpp_geometricutilities.lib
        libnxopencpp_implicit.lib
        libnxopencpp_issue.lib
        libnxopencpp_layer.lib
        libnxopencpp_layout2d.lib
        libnxopencpp_markup.lib
        libnxopencpp_mechanicalrouting.lib
        libnxopencpp_mechatronics.lib
        libnxopencpp_mendixreporting.lib
        libnxopencpp_modldirect.lib
        libnxopencpp_modlutils.lib
        libnxopencpp_moldcooling.lib
        libnxopencpp_motion.lib
        libnxopencpp_openxml.lib
        libnxopencpp_optimization.lib
        libnxopencpp_options.lib
        libnxopencpp_partfamily.lib
        libnxopencpp_pcbexchange.lib
        libnxopencpp_pdm.lib
        libnxopencpp_physmat.lib
        libnxopencpp_placement.lib
        libnxopencpp_plas.lib
        libnxopencpp_positioning.lib
        libnxopencpp_preferences.lib
        libnxopencpp_report.lib
        libnxopencpp_routing.lib
        libnxopencpp_routingcommon.lib
        libnxopencpp_schematic.lib
        libnxopencpp_select.lib
        libnxopencpp_shapesearch.lib
        libnxopencpp_sheetmetal.lib
        libnxopencpp_shipdesign.lib
        libnxopencpp_sim.lib
        libnxopencpp_structuredesign.lib
        libnxopencpp_tooling.lib
        libnxopencpp_userdefinedobjects.lib
        libnxopencpp_userdefinedtemplate.lib
        libnxopencpp_validate.lib
        libnxopencpp_visualreporting.lib
        libnxopencpp_vsa.lib
        libnxopencpp_weld.lib
        libnxopendebugsessioncpp.lib
        libnxopenjava_markup.lib
        libnxopenuicpp.lib
        libopenintpp.lib
        libopenpp.lib
        libpartmfgopencpp.lib
        libpidopencpp.lib
        libpresslinesimulopencpp.lib
        libruleopencpp.lib
        libsafetyopencpp.lib
        libstagemodelopencpp.lib
        libtdpopencpp.lib
        libufun.lib
        libufun_cae.lib
        libufun_cam.lib
        libufun_die.lib
        libufun_rule_nxopen.lib
        libufun_vdac.lib
        libufun_weld.lib
        libugopenint.lib
        libugopenint_cae.lib
        libugopenint_cam.lib
        libvmathpp.lib)

#这里是为了将编译好的dll文件拷贝到指定目录,方便运行调试,可以直接将编译后的文件拷贝到模块目录
add_custom_command(TARGET KKTools POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_if_different
        "$<TARGET_FILE:KKTools>"
        "D:/works/KKTools/application")

6、重新加载CMAKE文件

7、编译

①选择编译类型:RelWithDebInfo

②选择要编译的程序,可以直接选择目标程序,会自动编译依赖库,也可以直接选择编译全部,需要手动添加编译配置

③点击即可进行编译

后面就开始你的开发之路吧,只需要套用CMAKE文件即可

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

守护暗神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值