当前位置: 首页 > news >正文

济南营销型网站建设贵吗wordpress post 404

济南营销型网站建设贵吗,wordpress post 404,帮人家做网站难吗,网站开发的主题目录标题 基本示例Cmake传递lib给MakefileCmake传递参数给Makefile,比如make cleanWindows下使用Cmake调用Makefile 基本示例 如果项目是使用传统的Makefile构建的,并且您希望使用CMake调用这些Makefile,您可以使用CMake的add_custom_target…

目录标题

  • 基本示例
  • Cmake传递lib给Makefile
  • Cmake传递参数给Makefile,比如make clean
  • Windows下使用Cmake调用Makefile

基本示例

如果项目是使用传统的Makefile构建的,并且您希望使用CMake调用这些Makefile,您可以使用CMake的add_custom_targetadd_custom_command命令来实现。

首先,创建一个CMakeLists.txt文件。然后,在其中使用add_custom_targetadd_custom_command来调用您的原始Makefile。

现在用一共示例来说明,假如有以下的项目结构

project/
├── build/
├── CMakeLists.txt
├── Makefile
└── src/├── Makefile└── main.cc

这是一个简单的项目,其中src目录包含一个main.cc文件。接下来,我们需要编写两个Makefile。

  1. 在项目的根目录下创建一个Makefile:

    在项目的根目录下的Makefile中,您可以使用$(MAKE)命令来调用src目录下的Makefile。:

    # project/Makefile.PHONY: allall: build_src_makefilebuild_src_makefile:$(MAKE) -C srcclean:$(MAKE) -C src clean
    

    这个Makefile现在定义了两个目标:allcleanall目标依赖于build_src_makefile目标,当您在顶层目录中运行makemake all时,它会调用src目录下的Makefile来构建项目。同样,clean目标会调用src目录下的Makefile中的clean目标来清理构建产物。

  2. src目录下创建另一个Makefile:

    # project/src/MakefileCC = g++
    CFLAGS = -Wall -std=c++11TARGET = main
    SOURCES = main.ccall: $(TARGET)$(TARGET): $(SOURCES)$(CC) $(CFLAGS) $(SOURCES) -o $(TARGET)clean:rm -f $(TARGET)
    

    此Makefile负责编译main.cc并生成一个名为main的可执行文件。

  3. 创建一个简单的main.cc文件:

    // project/src/main.cc#include <iostream>int main() {std::cout << "Hello, world!" << std::endl;return 0;
    }
    
  4. 确保项目根目录下的CMakeLists.txt文件包含以下内容:

    cmake_minimum_required(VERSION 3.10)project(MyProject)add_custom_target(build_top_level_makefileCOMMAND make -C ${CMAKE_CURRENT_SOURCE_DIR}WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})add_custom_target(build_src_makefileCOMMAND make -C ${CMAKE_CURRENT_SOURCE_DIR}/srcWORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src)
    
  5. 切换到build目录,并运行cmake

    cd build
    cmake ..
    

    这将在build目录下生成CMake的Makefile。

  6. build目录下运行make

    make build_top_level_makefile
    

    或者直接运行:

    make build_src_makefile
    

    这将使用src目录下的Makefile构建项目。

  7. 运行生成的可执行文件:

    ../src/main
    

Cmake传递lib给Makefile

将CMake引用的库连接到调用的Makefile中需要手动处理一些细节,但这是可行的。以下是一种可能的方法:

  1. 在您的CMakeLists.txt中,找到和引用的库相关的信息,包括库文件的路径和链接选项。例如,如果您使用find_packagetarget_link_libraries来引用库,那么您需要找到这些库的路径和链接选项。
  2. 创建一个新的Makefile变量,用于传递库信息给被调用的Makefile。例如,您可以创建一个名为LIBS的变量,并将CMake找到的库信息赋值给它。
  3. 修改被调用的Makefile,使其能够接收并使用从CMake传递的库信息。在Makefile中,您需要使用$(LIBS)变量来添加库链接选项。

例如,您的CMakeLists.txt文件可能如下所示:

cmake_minimum_required(VERSION 3.10)
project(MyProject)# Find your libraries using find_package or other methods
find_package(YourLibrary REQUIRED)# ...add_custom_target(build_with_libsCOMMAND make -C ${CMAKE_CURRENT_SOURCE_DIR} LIBS="${YourLibrary_LIBRARIES}"WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

接下来,修改您的Makefile,以便它能够接收和使用LIBS变量。例如:

# Your original Makefile content# Add the library information passed from CMake
LDFLAGS += $(LIBS)# ...

这样,当您通过CMake调用Makefile时,CMake找到的库信息将被传递给Makefile,并用于链接过程。

Cmake传递参数给Makefile,比如make clean

CMake可以通过add_custom_targetadd_custom_command传递Makefile的其他参数。例如,要实现make clean,您可以在CMakeLists.txt中添加一个自定义目标,该目标调用被传递参数的Makefile。

以下是一个在CMakeLists.txt中添加make clean自定义目标的示例:

cmake_minimum_required(VERSION 3.10)
project(MyProject)# ...add_custom_target(clean_makefileCOMMAND make -C ${CMAKE_CURRENT_SOURCE_DIR} cleanWORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

这将创建一个名为clean_makefile的自定义目标,当您调用cmake --build . --target clean_makefile时,它将在CMake当前源目录中执行make clean

同样,您可以将任何其他Makefile参数传递给自定义目标,以便在CMake构建过程中使用。

Windows下使用Cmake调用Makefile

在Windows上使用CMake调用Makefile是可行的,但需要考虑一些额外因素。首先,Windows上没有默认的Make工具,因此您需要安装GNU Make或其他Make实现。GNU Make通常可以通过安装MinGW或Cygwin获得。

然后,确保将Make工具添加到系统的PATH环境变量中,以便CMake可以找到并调用它。当您在Windows上使用CMake时,生成的构建系统可能是Visual Studio解决方案或NMake文件。因此,调用Makefile时,您需要确保使用了正确的构建系统。

例如,假设您已经安装了GNU Make并将其添加到了系统PATH中。在CMakeLists.txt中,您可以创建一个自定义目标,以便在Windows上调用Makefile:

cmake_minimum_required(VERSION 3.10)
project(MyProject)# ...if(WIN32)add_custom_target(build_with_makefileCOMMAND make -C ${CMAKE_CURRENT_SOURCE_DIR}WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif()

在Windows上使用CMake生成构建文件时,您可能需要指定一个生成器。例如,您可以使用命令行选项-G指定生成器:

cmake -G "MinGW Makefiles" ..

这将生成适用于MinGW Make的Makefile。然后,您可以使用cmake --build . --target build_with_makefile命令来调用CMakeLists.txt中定义的自定义目标,进而调用您的原始Makefile。

注意,Visual Studio解决方案使用MSBuild作为其构建系统,而不是Make。当您在Windows上使用CMake生成Visual Studio解决方案时,CMake会生成一个.sln文件和多个.vcxproj文件,这些文件与MSBuild一起工作。在这种情况下,直接在CMakeLists.txt中调用原始的Makefile是不合适的。

不过,如果您仍然需要在Visual Studio解决方案中调用Makefile,可以创建一个自定义的构建事件。您可以在Visual Studio项目属性中设置这个事件,以在构建过程的某个特定阶段调用Makefile。具体操作如下:

  1. 在Visual Studio中打开您的项目。
  2. 右键点击项目名称,选择“属性”。
  3. 在“配置属性”下展开“生成事件”。
  4. 在“预生成事件命令行”、“预链接事件命令行”或“后生成事件命令行”中输入执行Makefile所需的命令。例如,您可以输入make -C "$(ProjectDir)",其中$(ProjectDir)是Visual Studio的一个宏,代表项目目录的路径。
  5. 点击“应用”,然后点击“确定”。

现在,在Visual Studio构建解决方案时,将在指定的构建阶段执行Makefile。需要注意的是,这种方法与CMake在很大程度上是分离的,因此您可能需要手动管理库依赖关系和其他构建设置。

http://www.yayakq.cn/news/181086/

相关文章:

  • 纯html5网站河南 医院 网站建设
  • 哈巴狗模式网站开发网站建设kuhugz
  • 青岛建设系统一体化网站山东网站制作应用
  • 网站设计 企业 济南什么都不会怎么做网站
  • 做公司网站的流程wordpress设置百度站长主动推送
  • 河北住房和城乡建设局网站首页东莞公司网站搭建多少钱
  • 2013电子商务网站建设怎么做注册账号的网站
  • 资源网站优化排名网站开发字典文档
  • 重庆网站关键词排名优化qq企业邮箱怎么注册
  • 十佳网站设计中国监察报电子版
  • 做芯片哪个网站推广视频剪辑制作公司
  • 小型网站设计及建设做兼职工作上哪个网站招聘
  • 企业网站建设一般考虑哪些因素?医药网站如何做网络推广
  • 长沙做网站建设公司哪家好wordpress 导航条插件
  • 技术先进的网站建设公司大连开发区天气预报
  • 哪里有给网站做开发公司会议提纲
  • 网络开发与维护是做什么的福田网站建设公司乐云seo
  • 购物网站开发分工做网站要排版吗
  • 温州市建设安监局网站免费建站免费网站申请
  • 用户体验 网站网站建设情况的汇报
  • 哪些网站是做快消品的17网站一起做网店好不好
  • 客似云来网站建设九号线香网站建设
  • 响应式网站开发教程西安知名的网站建设公司
  • pc端自适应网站模板北京米兰广告设计有限公司
  • 手机网站加速器深圳网站优化推广方案
  • 宿州房地产网站建设访问一个网站的全过程
  • 做地方网站数据哪里来wordpress无法访问上传的图面
  • 建设银行上海分行招聘网站企业网络托管公司
  • 免费可商用素材网站西安商城网站建设
  • 深圳快速网站制作哪家快wordpress怎么分享到微信