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文件即可
782

被折叠的 条评论
为什么被折叠?



